📖 Scenario: You are managing a small online bookstore database. To keep the database fast and efficient, you need to create and maintain indexes on important columns.
🎯 Goal: Build a MySQL script that creates a table, adds an index, and then maintains that index by dropping and recreating it.
📋 What You'll Learn
Create a table named books with columns id (integer primary key), title (varchar 100), and author (varchar 100).
Add an index named idx_author on the author column.
Drop the index idx_author.
Recreate the index 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 pages quickly.
💼 Career
Database administrators and developers use index maintenance to keep applications running smoothly and efficiently.
Progress0 / 4 steps
1
Create the books table
Write a MySQL statement to create a table called books with three columns: id as an integer primary key, title as varchar(100), and author as varchar(100).
MySQL
Hint
Use CREATE TABLE with column definitions and PRIMARY KEY for id.
2
Add an index on author
Write a MySQL statement to add an index named idx_author on the author column of the books table.
MySQL
Hint
Use CREATE INDEX idx_author ON books(author); to add the index.
3
Drop the index idx_author
Write a MySQL statement to drop the index named idx_author from the books table.
MySQL
Hint
Use DROP INDEX idx_author ON books; to remove the index.
4
Recreate the index idx_author
Write a MySQL statement to recreate the index named idx_author on the author column of the books table.
MySQL
Hint
Use the same CREATE INDEX statement as before to recreate the index.
Practice
(1/5)
1. What is the main purpose of maintaining indexes in a MySQL database?
easy
A. To speed up data searches and queries
B. To increase the size of the database
C. To delete all data from tables
D. To backup the database automatically
Solution
Step 1: Understand what indexes do
Indexes help the database find data faster, like an index in a book.
Step 2: Identify the main benefit of index maintenance
Maintaining indexes keeps searches quick and efficient.
Final Answer:
To speed up data searches and queries -> Option A
Quick Check:
Indexes improve search speed = D [OK]
Hint: Indexes speed up queries by organizing data [OK]
Common Mistakes:
Thinking indexes increase database size only
Confusing index maintenance with data backup
Believing indexes delete data
2. Which of the following is the correct syntax to drop an index named idx_name from a table users in MySQL?
easy
A. DELETE INDEX idx_name FROM users;
B. DROP INDEX idx_name ON users;
C. REMOVE INDEX idx_name IN users;
D. DROP idx_name FROM users;
Solution
Step 1: Recall MySQL syntax for dropping an index
The correct command is DROP INDEX index_name ON table_name;.
Step 2: Match the syntax with options
DROP INDEX idx_name ON users; matches the correct syntax exactly.
Final Answer:
DROP INDEX idx_name ON users; -> Option B
Quick Check:
DROP INDEX ... ON ... is correct syntax = B [OK]
Hint: Use DROP INDEX index_name ON table_name; to remove indexes [OK]
Common Mistakes:
Using DELETE or REMOVE instead of DROP
Omitting ON keyword
Wrong keyword order
3. Given the table products with an index on category_id, what will be the effect of running OPTIMIZE TABLE products;?
medium
A. It renames the products table
B. It deletes all rows from the products table
C. It adds a new index on category_id automatically
D. It rebuilds the table and its indexes to improve performance
Solution
Step 1: Understand what OPTIMIZE TABLE does
OPTIMIZE TABLE rebuilds the table and its indexes to reduce fragmentation and improve speed.
Step 2: Analyze the options
Only It rebuilds the table and its indexes to improve performance correctly describes this effect.
Final Answer:
It rebuilds the table and its indexes to improve performance -> Option D
Quick Check:
OPTIMIZE TABLE rebuilds table and indexes = A [OK]
Hint: OPTIMIZE TABLE rebuilds indexes and table for better speed [OK]
Common Mistakes:
Thinking OPTIMIZE deletes data
Assuming it adds indexes automatically
Confusing it with renaming tables
4. You tried to drop an index using DROP INDEX idx_user ON users; but got an error. What is a likely cause?
medium
A. The table users does not exist
B. You must use DELETE INDEX instead of DROP INDEX
C. The index name idx_user does not exist on the table
D. You need to restart the MySQL server before dropping indexes
Solution
Step 1: Check common reasons for DROP INDEX errors
An error usually occurs if the index name is wrong or missing.
Step 2: Evaluate the options
The index name idx_user does not exist on the table is the most common cause; other options are incorrect commands or unnecessary actions.
Final Answer:
The index name idx_user does not exist on the table -> Option C
Quick Check:
Wrong index name causes DROP INDEX error = C [OK]
Hint: Verify index name exists before dropping it [OK]
Common Mistakes:
Using DELETE instead of DROP
Assuming server restart is needed
Not checking table existence first
5. You have a large table orders with a composite index on (customer_id, order_date). After frequent inserts and deletes, queries on customer_id are slow. What is the best index maintenance step to improve performance?
hard
A. Run OPTIMIZE TABLE orders; to rebuild the table and indexes
B. Drop the composite index and create separate indexes on each column
C. Delete all rows and reload the table
D. Rename the table to refresh indexes
Solution
Step 1: Understand index fragmentation impact
Frequent inserts and deletes cause index fragmentation, slowing queries.
Step 2: Choose the best maintenance action
OPTIMIZE TABLE rebuilds indexes and reduces fragmentation, improving query speed.
Step 3: Evaluate other options
Dropping and recreating indexes separately may not help and can be costly; deleting data or renaming table is unrelated.
Final Answer:
Run OPTIMIZE TABLE orders; to rebuild the table and indexes -> Option A
Quick Check:
OPTIMIZE TABLE fixes fragmentation = A [OK]
Hint: Use OPTIMIZE TABLE to fix fragmented indexes after many changes [OK]
Common Mistakes:
Dropping composite index without reason
Thinking renaming table refreshes indexes
Deleting data instead of maintaining indexes
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.