📖 Scenario: You are managing a small online bookstore database. To help speed up searches for books by their titles, you want to create an index on the title column of the books table.
🎯 Goal: Build a SQL script that creates a books table, then creates an index on the title column to improve search speed.
📋 What You'll Learn
Create a table called books with columns id (integer primary key) and title (text).
Create an index called idx_title on the title column of the books table.
Use standard SQL syntax for creating the index.
💡 Why This Matters
🌍 Real World
Indexes help databases find data faster, which is important for websites and apps that need quick responses.
💼 Career
Database administrators and developers use indexes to optimize database performance and improve user experience.
Progress0 / 4 steps
1
Create the books table
Write a SQL statement to create a table called books with two columns: id as an integer primary key, and title as text.
SQL
Hint
Use CREATE TABLE books (id INTEGER PRIMARY KEY, title TEXT);
2
Prepare to create an index
Add a comment line that says -- Prepare to create index on title to indicate the next step.
SQL
Hint
Just add a comment line starting with --
3
Create the index on title
Write a SQL statement to create an index named idx_title on the title column of the books table.
SQL
Hint
Use CREATE INDEX idx_title ON books(title);
4
Complete the SQL script
Add a comment line at the end that says -- Index creation complete to mark the script completion.
SQL
Hint
Just add a comment line starting with --
Practice
(1/5)
1. What is the main purpose of using CREATE INDEX in a database?
easy
A. To speed up data retrieval by creating shortcuts on columns
B. To delete rows faster from a table
C. To backup the database automatically
D. To encrypt the data stored in the table
Solution
Step 1: Understand what an index does
An index creates a shortcut to quickly find data in a column without scanning the whole table.
Step 2: Identify the main benefit
This shortcut speeds up data retrieval, especially for searches and sorts.
Final Answer:
To speed up data retrieval by creating shortcuts on columns -> Option A
Quick Check:
CREATE INDEX improves search speed [OK]
Hint: Indexes speed up searches by creating shortcuts [OK]
Common Mistakes:
Thinking indexes speed up data deletion
Confusing indexes with backups
Believing indexes encrypt data
2. Which of the following is the correct syntax to create an index named idx_name on the column last_name of the table employees?
easy
A. CREATE idx_name INDEX ON employees (last_name);
B. CREATE INDEX idx_name 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 the standard CREATE INDEX syntax
The correct syntax is: CREATE INDEX index_name ON table_name (column_name);
Step 2: Match the syntax with options
CREATE INDEX idx_name ON employees (last_name); matches the correct order and keywords exactly.
Final Answer:
CREATE INDEX idx_name ON employees (last_name); -> Option B
Quick Check:
CREATE INDEX index_name ON table (column) [OK]
Hint: Remember: CREATE INDEX name ON table (column) [OK]
Common Mistakes:
Swapping index name and table name positions
Using wrong keyword order
Omitting ON keyword
3. Given the table products(id INT, name VARCHAR, price DECIMAL), what will be the result of this SQL command?
CREATE INDEX idx_price ON products(price);
medium
A. The products table is duplicated with the name idx_price
B. The price column is deleted from the products table
C. An index named idx_price is created on the price column to speed up queries filtering by price
D. Syntax error because price is not a primary key
Solution
Step 1: Understand what the CREATE INDEX command does here
The command creates an index named idx_price on the price column of products.
Step 2: Identify the effect of the index
This index helps speed up queries that filter or sort by price without changing the table structure.
Final Answer:
An index named idx_price is created on the price column to speed up queries filtering by price -> Option C
Quick Check:
CREATE INDEX adds search speed, no deletion [OK]
Hint: CREATE INDEX speeds up search, does not delete or duplicate [OK]
Common Mistakes:
Thinking index creation deletes columns
Assuming index requires primary key
Confusing index with table duplication
4. Identify the error in this SQL statement:
CREATE INDEX ON employees (last_name);
medium
A. Cannot create index on last_name column
B. Missing table name after ON
C. Incorrect use of parentheses around column name
D. Missing index name after CREATE INDEX
Solution
Step 1: Check the syntax of CREATE INDEX
The syntax requires an index name after CREATE INDEX before ON.
Step 2: Identify the missing part
The statement lacks the index name, which causes a syntax error.
Final Answer:
Missing index name after CREATE INDEX -> Option D
Quick Check:
CREATE INDEX must have a name [OK]
Hint: Always name your index after CREATE INDEX [OK]
Common Mistakes:
Omitting the index name
Confusing table name with index name
Misplacing parentheses
5. You want to speed up queries that filter by both category and price columns in the items table. Which is the best way to create an index?
hard
A. CREATE INDEX idx_cat_price ON items (category, price);
B. CREATE INDEX idx_cat ON items (category); CREATE INDEX idx_price ON items (price);
C. CREATE INDEX idx_price_cat ON items (price, category);
D. CREATE INDEX idx_items ON items (category);
Solution
Step 1: Understand multi-column index usage
A single index on (category, price) helps queries filtering by both columns efficiently.
Step 2: Compare options
CREATE INDEX idx_cat_price ON items (category, price); creates a composite index on category and price in that order, which is best for combined filters.
Final Answer:
CREATE INDEX idx_cat_price ON items (category, price); -> Option A
Quick Check:
Composite index on both columns is best [OK]
Hint: Use composite index for multiple columns searched together [OK]
Common Mistakes:
Creating separate indexes instead of composite
Wrong column order in composite index
Creating index on only one column when filtering by two
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.