Bird
Raised Fist0
SQLquery~20 mins

When indexes help and when they hurt in SQL - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Index Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
Effect of Index on SELECT Query Performance

Consider a table employees with 1 million rows and an index on the department_id column. Which query will likely run faster due to the index?

SQL
SELECT * FROM employees WHERE department_id = 5;
AThe query will run slower because the index causes a full table scan.
BThe query will fail because indexes cannot be used in WHERE clauses.
CThe query performance will be the same with or without the index.
DThe query will run faster because the index helps find rows with department_id = 5 quickly.
Attempts:
2 left
💡 Hint

Think about how indexes help find specific values quickly without scanning the whole table.

❓ query_result
intermediate
2:00remaining
When Indexes Hurt INSERT Performance

Given a table orders with multiple indexes, what happens to the speed of an INSERT operation?

SQL
INSERT INTO orders (order_id, customer_id, order_date) VALUES (101, 2001, '2024-01-01');
AINSERT operations are unaffected by indexes.
BINSERT operations become faster because indexes speed up data insertion.
CINSERT operations become slower because each index must be updated.
DINSERT operations fail if indexes exist.
Attempts:
2 left
💡 Hint

Consider what happens behind the scenes when data is added to a table with indexes.

🧠 Conceptual
advanced
2:00remaining
Choosing When to Use Indexes

Which scenario is the best candidate for adding an index?

AA column frequently used in WHERE clauses for filtering large tables.
BA column rarely used in queries and mostly NULL values.
CA column that is updated very frequently but rarely queried.
DA small table with only a few rows.
Attempts:
2 left
💡 Hint

Think about when indexes provide the most benefit versus when they add unnecessary overhead.

📝 Syntax
advanced
2:00remaining
Syntax to Create an Index

Which SQL statement correctly creates an index on the email column of the users table?

ACREATE INDEX idx_email ON users(email);
BCREATE users INDEX idx_email(email);
CINDEX CREATE idx_email ON users(email);
DCREATE INDEX users.idx_email(email);
Attempts:
2 left
💡 Hint

Remember the standard SQL syntax for creating indexes.

❓ optimization
expert
2:00remaining
Impact of Too Many Indexes on Query Performance

A table has 10 indexes on various columns. What is a likely consequence when running an UPDATE statement that modifies multiple columns?

AThe UPDATE performance is unaffected by the number of indexes.
BThe UPDATE will be slower because all affected indexes must be updated.
CThe UPDATE will fail if more than 5 indexes exist.
DThe UPDATE will be faster because indexes speed up data modification.
Attempts:
2 left
💡 Hint

Consider how indexes affect data modification operations like UPDATE.

Practice

(1/5)
1. Which of the following best describes when an index helps in a database?
easy
A. When you want to reduce the size of the database file.
B. When you want to speed up inserting new rows.
C. When you want to quickly find rows based on column values.
D. When you want to delete all rows faster.

Solution

  1. Step 1: Understand what indexes do

    Indexes help the database find rows faster by creating a quick lookup structure on columns.
  2. Step 2: Identify when this is useful

    Searching rows by column values is faster with indexes, but inserts or deletes can slow down.
  3. Final Answer:

    When you want to quickly find rows based on column values. -> Option C
  4. Quick Check:

    Indexes speed up searching [OK]
Hint: Indexes speed up searches, not inserts or deletes [OK]
Common Mistakes:
  • Thinking indexes speed up inserts
  • Confusing index purpose with storage size
  • Assuming indexes help deletes
2. Which SQL statement correctly creates an index on the column email in the table users?
easy
A. CREATE INDEX idx_email ON users(email);
B. CREATE users INDEX ON email;
C. INDEX CREATE ON users(email);
D. CREATE INDEX users_email email;

Solution

  1. Step 1: Recall correct CREATE INDEX syntax

    The correct syntax is: CREATE INDEX index_name ON table_name(column_name);
  2. Step 2: Match the options to syntax

    CREATE INDEX idx_email ON users(email); matches the correct syntax exactly.
  3. Final Answer:

    CREATE INDEX idx_email ON users(email); -> Option A
  4. Quick Check:

    Correct CREATE INDEX syntax = CREATE INDEX idx_email ON users(email); [OK]
Hint: CREATE INDEX index_name ON table(column) is correct syntax [OK]
Common Mistakes:
  • Swapping table and column names
  • Omitting ON keyword
  • Wrong order of keywords
3. Given a table orders with 1 million rows and an index on customer_id, what is the expected effect of running SELECT * FROM orders WHERE customer_id = 123;?
medium
A. The query will use the index to quickly find matching rows.
B. The query will scan all rows, ignoring the index.
C. The query will be slower because indexes slow down SELECT queries.
D. The query will fail because indexes cannot be used in WHERE clauses.

Solution

  1. Step 1: Understand index usage in WHERE clause

    Indexes help the database quickly locate rows matching the WHERE condition on indexed columns.
  2. Step 2: Apply to the query

    Since customer_id is indexed, the query uses the index to find rows without scanning all 1 million rows.
  3. Final Answer:

    The query will use the index to quickly find matching rows. -> Option A
  4. Quick Check:

    Indexed WHERE columns speed up SELECT [OK]
Hint: WHERE on indexed columns uses index for fast lookup [OK]
Common Mistakes:
  • Thinking indexes slow down SELECT
  • Believing indexes are ignored in WHERE
  • Assuming query fails with indexes
4. You notice that inserting rows into a table is very slow after adding several indexes. What is the most likely cause?
medium
A. Indexes cause syntax errors during inserts.
B. Indexes speed up inserts, so the problem is elsewhere.
C. The table is too small for indexes to matter.
D. Indexes slow down inserts because each insert updates all indexes.

Solution

  1. Step 1: Understand index impact on inserts

    Each insert must update all indexes to keep them current, which adds overhead and slows inserts.
  2. Step 2: Identify cause of slow inserts

    Adding many indexes increases this overhead, causing slower insert performance.
  3. Final Answer:

    Indexes slow down inserts because each insert updates all indexes. -> Option D
  4. Quick Check:

    More indexes = slower inserts [OK]
Hint: More indexes mean slower inserts due to update overhead [OK]
Common Mistakes:
  • Thinking indexes speed up inserts
  • Blaming syntax errors for slow inserts
  • Ignoring index update cost
5. A table products has indexes on category_id and price. You run a query filtering on category_id and sorting by price. How can indexes help, and what might hurt performance?
hard
A. Indexes do not help filtering or sorting; they only help joins.
B. Index on category_id helps filtering; index on price helps sorting; but too many indexes slow inserts.
C. Indexes speed up inserts but slow down filtering and sorting.
D. Indexes on both columns cause syntax errors in queries.

Solution

  1. Step 1: Analyze filtering and sorting with indexes

    The index on category_id speeds up filtering rows matching that category. The index on price can speed up sorting if used properly.
  2. Step 2: Consider performance trade-offs

    Having multiple indexes helps reads but slows down inserts and updates because all indexes must be maintained.
  3. Final Answer:

    Index on category_id helps filtering; index on price helps sorting; but too many indexes slow inserts. -> Option B
  4. Quick Check:

    Indexes help filtering and sorting but slow inserts [OK]
Hint: Indexes help reads but slow writes when many exist [OK]
Common Mistakes:
  • Believing indexes only help joins
  • Thinking indexes speed up inserts
  • Assuming indexes cause syntax errors
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard