Bird
Raised Fist0
SQLquery~10 mins

Why indexes matter in SQL - Visual Breakdown

Choose your learning style10 modes available
Concept Flow - Why indexes matter
Start Query
↓
Scan Table Rows
↓
Check Each Row for Condition
↓
Return Matching Rows
↓
Start Query
↓
Use Index to Find Rows
↓
Directly Access Matching Rows
↓
Return Matching Rows
This flow shows how a query searches data without and with an index, highlighting how indexes speed up finding rows.
Execution Sample
SQL
SELECT * FROM employees WHERE employee_id = 5;
This query finds the employee with ID 5, showing how an index helps find it faster.
Execution Table
StepActionRows CheckedIndex UsedResult
1Start query execution0NoNo rows found yet
2Scan row 11NoCheck if employee_id=5 (No)
3Scan row 22NoCheck if employee_id=5 (No)
4Scan row 33NoCheck if employee_id=5 (No)
5Scan row 44NoCheck if employee_id=5 (No)
6Scan row 55NoCheck if employee_id=5 (Yes) - Return row
7End query5NoReturned 1 row
1Start query execution0YesNo rows found yet
2Use index to find employee_id=50YesDirectly locate row 5
3Access row 51YesReturn row immediately
4End query1YesReturned 1 row
💡 Without index, all rows scanned until match found; with index, direct access to matching row.
Variable Tracker
VariableStartAfter Step 2After Step 5Final
Rows Checked0145
Index UsedNoNoNoNo
Rows Returned0001
Key Moments - 2 Insights
Why does scanning all rows take longer than using an index?
Because scanning checks each row one by one (see execution_table rows 2-6), while using an index jumps directly to the matching row (rows 2-3 with index).
Does using an index mean fewer rows are checked?
Yes, with an index only the matching row is accessed (execution_table row 3 with index), unlike scanning all rows without index.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, how many rows are checked when using the index?
A0
B1
C5
DAll rows
💡 Hint
Check the 'Rows Checked' column in the rows where 'Index Used' is Yes.
At which step does the query find the matching row without using an index?
AStep 6
BStep 2
CStep 7
DStep 3
💡 Hint
Look at the 'Result' column for the first 'Yes' match without index.
If the table had 1000 rows, how would using an index affect the number of rows checked?
AStill checks all 1000 rows
BChecks half the rows
CChecks fewer rows, close to 1
DChecks twice as many rows
💡 Hint
Indexes allow direct access, so rows checked stay low regardless of table size.
Concept Snapshot
Why Indexes Matter:
- Without index: query scans every row to find matches.
- With index: query uses index to jump directly to matching rows.
- Indexes reduce rows checked, speeding up queries.
- Especially helpful for large tables.
- Use indexes on columns often searched or joined.
Full Transcript
This visual shows how a database query finds data with and without an index. Without an index, the query checks each row one by one until it finds the match, which can be slow for big tables. With an index, the query uses a special data structure to jump directly to the matching row, checking far fewer rows and returning results faster. The execution table traces each step, showing rows checked and whether the index is used. This helps beginners see why indexes matter for query speed.

Practice

(1/5)
1. Why do indexes matter in a database?
easy
A. They increase the size of the database without any benefit.
B. They automatically fix data errors in tables.
C. They slow down all queries regardless of type.
D. They make searching data faster by creating a quick lookup structure.

Solution

  1. Step 1: Understand what indexes do

    Indexes create a special structure that helps the database find data quickly, like a book's index.
  2. Step 2: Identify the main benefit

    This structure speeds up searching and filtering operations, making queries faster.
  3. Final Answer:

    They make searching data faster by creating a quick lookup structure. -> Option D
  4. Quick Check:

    Indexes improve search speed = B [OK]
Hint: Indexes speed up searches by acting like a book's index [OK]
Common Mistakes:
  • Thinking indexes slow down all queries
  • Believing indexes fix data errors
  • Assuming indexes only increase database size
2. Which SQL statement correctly creates an index on the column email in the users table?
easy
A. CREATE INDEX users ON idx_email(email);
B. MAKE INDEX idx_email ON users(email);
C. CREATE INDEX idx_email ON users(email);
D. INDEX CREATE idx_email ON users(email);

Solution

  1. Step 1: Recall correct SQL syntax for creating an index

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

    CREATE INDEX idx_email ON users(email); matches the correct syntax exactly, others have wrong keywords or order.
  3. Final Answer:

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

    Correct CREATE INDEX syntax = C [OK]
Hint: Remember: CREATE INDEX index_name ON table(column) [OK]
Common Mistakes:
  • Using wrong keywords like MAKE or INDEX CREATE
  • Swapping table and index names
  • Missing ON keyword
3. Given a table orders with 1 million rows and an index on customer_id, what is the expected result of this query?
SELECT * FROM orders WHERE customer_id = 123;
medium
A. The query will use the index to quickly find matching rows.
B. The query will return no rows because indexes hide data.
C. The query will fail because indexes cannot be used in WHERE clauses.
D. The query will scan all 1 million rows, taking a long time.

Solution

  1. Step 1: Understand index usage in WHERE clause

    An index on customer_id helps the database quickly locate rows matching that value.
  2. Step 2: Predict query behavior

    The database uses the index to avoid scanning all rows, speeding up the query.
  3. Final Answer:

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

    Index speeds WHERE search = D [OK]
Hint: Indexes speed up WHERE filters on indexed columns [OK]
Common Mistakes:
  • Thinking indexes cause full table scans
  • Believing indexes prevent queries from running
  • Assuming indexes hide data from results
4. You created an index on the username column, but your query is still slow:
SELECT * FROM users WHERE username LIKE '%admin%';

What is the most likely reason?
medium
A. The index was created on the wrong table.
B. Indexes cannot speed up LIKE queries with a leading wildcard '%'.
C. The query syntax is incorrect and causes errors.
D. Indexes always slow down SELECT queries.

Solution

  1. Step 1: Analyze the LIKE pattern

    A LIKE pattern starting with '%' means the search can match anywhere in the string, preventing index use.
  2. Step 2: Understand index limitations

    Indexes work best when the search starts from the beginning of the string, so leading wildcards disable index usage.
  3. Final Answer:

    Indexes cannot speed up LIKE queries with a leading wildcard '%'. -> Option B
  4. Quick Check:

    Leading '%' disables index use = A [OK]
Hint: Leading '%' in LIKE disables index use [OK]
Common Mistakes:
  • Assuming all LIKE queries use indexes
  • Thinking index on wrong table causes this
  • Believing indexes always slow SELECT
5. You have a table sales with columns sale_id, product_id, and sale_date. You often run this query:
SELECT * FROM sales WHERE product_id = 101 AND sale_date >= '2024-01-01';

Which indexing strategy will likely improve query speed the most?
hard
A. Create a composite index on (product_id, sale_date).
B. Create separate indexes on product_id and sale_date.
C. Create a single index on sale_date only.
D. Do not create any index to keep inserts fast.

Solution

  1. Step 1: Understand query filters

    The query filters by product_id and a range on sale_date.
  2. Step 2: Choose best index type

    A composite index on both columns helps the database quickly find rows matching both conditions together.
  3. Step 3: Compare with other options

    Separate indexes may help but are less efficient than a composite index for combined filters.
  4. Final Answer:

    Create a composite index on (product_id, sale_date). -> Option A
  5. Quick Check:

    Composite index matches multi-column filter = A [OK]
Hint: Use composite index for multi-column WHERE filters [OK]
Common Mistakes:
  • Creating index on only one column
  • Using separate indexes instead of composite
  • Avoiding indexes to speed inserts without reason
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