Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Index Selection Guidelines
📖 Scenario: You are managing a small online bookstore database. You want to improve the speed of searching books by their title and author. To do this, you will create indexes on the appropriate columns.
🎯 Goal: Create a table called books with columns for id, title, and author. Then, add indexes on the title and author columns to speed up search queries.
📋 What You'll Learn
Create a table named books with columns id (integer primary key), title (text), and author (text).
Create an index named idx_title on the title column.
Create an index named idx_author on the author column.
💡 Why This Matters
🌍 Real World
Indexes help databases find data faster, just like an index in a book helps you find a topic quickly.
💼 Career
Database administrators and developers use indexes to optimize query performance in real applications.
Progress0 / 4 steps
1
Create the books table
Write a SQL statement to create a table called books with three columns: id as an integer primary key, title as text, and author as text.
DBMS Theory
Hint
Use CREATE TABLE books (id INTEGER PRIMARY KEY, title TEXT, author TEXT);
2
Add an index on the title column
Write a SQL statement to create an index named idx_title on the title column of the books table.
DBMS Theory
Hint
Use CREATE INDEX idx_title ON books(title);
3
Add an index on the author column
Write a SQL statement to create an index named idx_author on the author column of the books table.
DBMS Theory
Hint
Use CREATE INDEX idx_author ON books(author);
4
Verify the indexes exist
Write a SQL query to list all indexes on the books table. Use the sqlite_master table and filter by type = 'index' and tbl_name = 'books'.
DBMS Theory
Hint
Use SELECT name FROM sqlite_master WHERE type = 'index' AND tbl_name = 'books';
Practice
(1/5)
1. Which of the following is the best reason to create an index on a database column?
easy
A. To make data entry faster
B. To reduce the size of the database
C. To speed up searches on that column
D. To prevent data duplication
Solution
Step 1: Understand the purpose of an index
An index is like a shortcut that helps the database find rows faster when searching by that column.
Step 2: Compare options with index purpose
Only speeding up searches matches the main use of indexes; other options do not relate to indexing benefits.
Final Answer:
To speed up searches on that column -> Option C
Quick Check:
Indexes improve search speed = A [OK]
Hint: Indexes speed up searches, not data entry or size [OK]
Common Mistakes:
Thinking indexes reduce database size
Believing indexes speed up data insertion
Confusing indexes with uniqueness constraints
2. Which of the following is the correct SQL syntax to create an index named idx_name on the column last_name of the table employees?
easy
A. CREATE INDEX idx_name ON employees (last_name);
B. CREATE idx_name INDEX ON employees (last_name);
C. INDEX CREATE idx_name ON employees (last_name);
D. CREATE INDEX ON employees idx_name (last_name);
Solution
Step 1: Recall standard SQL syntax for creating an index
The correct syntax is: CREATE INDEX index_name ON table_name (column_name);
Step 2: Match options to syntax
CREATE INDEX idx_name ON employees (last_name); matches the correct syntax exactly; others have wrong order or keywords.
Final Answer:
CREATE INDEX idx_name ON employees (last_name); -> Option A
Quick Check:
Standard SQL index creation = C [OK]
Hint: Remember: CREATE INDEX name ON table (column) [OK]
Common Mistakes:
Swapping keywords order
Omitting the INDEX keyword
Placing index name after table name incorrectly
3. Consider a table orders with columns order_id, customer_id, and order_date. If you create an index on customer_id, what will be the expected effect when running this query? SELECT * FROM orders WHERE customer_id = 123;
medium
A. The query will run slower because indexes slow down searches
B. The query will cause an error due to the index
C. The query will return no results because indexes filter data
D. The query will run faster because the index helps find matching rows quickly
Solution
Step 1: Understand index effect on search queries
An index on customer_id allows the database to quickly locate rows where customer_id = 123 without scanning the whole table.
Step 2: Analyze query behavior with index
The query uses a WHERE condition on customer_id, so the index speeds up the search, making the query faster.
Final Answer:
The query will run faster because the index helps find matching rows quickly -> Option D
Quick Check:
Index speeds up WHERE searches = B [OK]
Hint: Indexes speed up WHERE filters on indexed columns [OK]
Common Mistakes:
Thinking indexes slow down searches
Believing indexes filter out data
Assuming indexes cause errors in queries
4. You created an index on the email column of the users table, but after inserting many new users, the database performance for inserts slowed down significantly. What is the most likely cause?
medium
A. The index was created on the wrong column
B. Indexes slow down data insertion because they must update with each insert
C. The database does not support indexes on email columns
D. The table is too small for indexes to help
Solution
Step 1: Understand index impact on data changes
Indexes improve search speed but add overhead during inserts because the index structure must be updated for each new row.
Step 2: Analyze why inserts slow down
Since the index updates on every insert, many inserts cause slower performance, which matches Indexes slow down data insertion because they must update with each insert.
Final Answer:
Indexes slow down data insertion because they must update with each insert -> Option B
Quick Check:
Indexes slow inserts due to update overhead = A [OK]
Hint: Indexes slow inserts due to update work [OK]
Common Mistakes:
Blaming wrong column choice for insert slowdown
Thinking indexes cause errors on email columns
Assuming small tables don't need indexes
5. You have a large sales table with columns sale_id, product_id, sale_date, and region. You often run queries filtering by product_id and region together. Which index strategy is best to improve query speed without hurting insert performance too much?
hard
A. Create a composite index on (product_id, region)
B. Create separate indexes on product_id and region
C. Create an index only on sale_date
D. Do not create any indexes to keep inserts fast
Solution
Step 1: Analyze query filter columns
Queries filter by both product_id and region together, so a composite index on both columns helps the database find matching rows efficiently.
Step 2: Compare index strategies
Separate indexes may help but are less efficient for combined filters; indexing sale_date is irrelevant here; no index hurts query speed.
Final Answer:
Create a composite index on (product_id, region) -> Option A
Quick Check:
Composite index matches multi-column filters = D [OK]
Hint: Use composite index for multi-column filters [OK]