Bird
Raised Fist0
SQLquery~10 mins

How an index works (B-tree mental model) in SQL - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a B-tree index on the column 'name' in the 'employees' table.

SQL
CREATE INDEX idx_name ON employees ([1]);
Drag options to blanks, or click blank then click option'
Aage
Bname
Csalary
Ddepartment
Attempts:
3 left
💡 Hint
Common Mistakes
Choosing a column that is not used in queries.
Using a column with many duplicate values which may not benefit much from indexing.
2fill in blank
medium

Complete the SQL query to use the index on 'name' to find employees named 'Alice'.

SQL
SELECT * FROM employees WHERE [1] = 'Alice';
Drag options to blanks, or click blank then click option'
Asalary
Bage
Cname
Ddepartment
Attempts:
3 left
💡 Hint
Common Mistakes
Filtering by a column that does not have an index.
Using a different column name in the WHERE clause.
3fill in blank
hard

Fix the error in the SQL query to use the index correctly for a range search on 'age'.

SQL
SELECT * FROM employees WHERE age [1] 30;
Drag options to blanks, or click blank then click option'
A>
BIN
CLIKE
D=
Attempts:
3 left
💡 Hint
Common Mistakes
Using '=' which only finds exact matches.
Using 'LIKE' which is for pattern matching, not numeric ranges.
4fill in blank
hard

Fill both blanks to create a B-tree index on 'department' and use it in a query filtering by 'department'.

SQL
CREATE INDEX idx_dept ON employees ([1]);
SELECT * FROM employees WHERE [2] = 'Sales';
Drag options to blanks, or click blank then click option'
Adepartment
Bname
Dsalary
Attempts:
3 left
💡 Hint
Common Mistakes
Using different columns in the index and WHERE clause.
Using a column that is not indexed in the WHERE clause.
5fill in blank
hard

Fill all three blanks to create a B-tree index on 'salary', select employees with salary greater than 50000, and order results by salary.

SQL
CREATE INDEX idx_salary ON employees ([1]);
SELECT * FROM employees WHERE [2] [3] 50000 ORDER BY salary;
Drag options to blanks, or click blank then click option'
Asalary
C>
D<
Attempts:
3 left
💡 Hint
Common Mistakes
Using '<' instead of '>' in the WHERE clause.
Using different columns in the index and WHERE clause.

Practice

(1/5)
1. What is the main purpose of a B-tree index in a database?
easy
A. To speed up data retrieval by organizing data in a balanced tree structure
B. To store data in a random order for faster insertion
C. To compress data to save disk space
D. To backup the database automatically

Solution

  1. Step 1: Understand what a B-tree index does

    A B-tree index organizes data in a balanced tree structure to allow quick searching without scanning the entire table.
  2. Step 2: Compare options with B-tree purpose

    Only To speed up data retrieval by organizing data in a balanced tree structure describes speeding up data retrieval using a balanced tree, which matches the B-tree index function.
  3. Final Answer:

    To speed up data retrieval by organizing data in a balanced tree structure -> Option A
  4. Quick Check:

    B-tree index = fast data lookup [OK]
Hint: B-tree indexes speed up searches by organizing data hierarchically [OK]
Common Mistakes:
  • Thinking indexes store data randomly
  • Confusing index with data compression
  • Believing indexes backup data
2. Which SQL statement correctly creates a B-tree index on the column last_name of the table employees?
easy
A. CREATE INDEX idx_last_name ON employees USING HASH (last_name);
B. CREATE INDEX idx_last_name ON employees (last_name) USING BITMAP;
C. CREATE INDEX idx_last_name ON employees (last_name);
D. CREATE INDEX idx_last_name ON employees USING FULLTEXT (last_name);

Solution

  1. Step 1: Identify default index type in SQL

    By default, CREATE INDEX creates a B-tree index unless specified otherwise.
  2. Step 2: Check syntax correctness

    CREATE INDEX idx_last_name ON employees (last_name); uses correct syntax without specifying a different index type, so it creates a B-tree index on last_name.
  3. Final Answer:

    CREATE INDEX idx_last_name ON employees (last_name); -> Option C
  4. Quick Check:

    Default index type = B-tree [OK]
Hint: Default index type is B-tree unless stated otherwise [OK]
Common Mistakes:
  • Using HASH or FULLTEXT without need
  • Adding unsupported index types like BITMAP in standard SQL
  • Incorrect syntax for index creation
3. Given a table products with a B-tree index on product_id, what will the query optimizer most likely do when running:
SELECT * FROM products WHERE product_id = 123;?
medium
A. Use the B-tree index to quickly locate the row with product_id 123
B. Perform a full table scan ignoring the index
C. Use a hash index lookup instead of the B-tree
D. Scan only the first 10 rows of the table

Solution

  1. Step 1: Understand query condition and index

    The query searches for a specific product_id value, which matches the indexed column.
  2. Step 2: Predict optimizer behavior with B-tree index

    The optimizer uses the B-tree index to quickly find the matching row without scanning the whole table.
  3. Final Answer:

    Use the B-tree index to quickly locate the row with product_id 123 -> Option A
  4. Quick Check:

    Indexed search = fast lookup [OK]
Hint: Queries on indexed columns use B-tree for fast lookup [OK]
Common Mistakes:
  • Assuming full table scan always happens
  • Confusing B-tree with hash index usage
  • Thinking partial scan happens without index
4. You created a B-tree index on the email column of the users table, but queries filtering by email are still slow. What is a likely cause?
medium
A. The index was created on the wrong column
B. The query uses a function on email preventing index use
C. B-tree indexes do not speed up queries on text columns
D. The table has too few rows for the index to help

Solution

  1. Step 1: Analyze query and index interaction

    If the query applies a function (like LOWER(email)) on the indexed column, the B-tree index cannot be used directly.
  2. Step 2: Evaluate other options

    The index was created on the wrong column is unlikely if index was created correctly; C is false because B-tree indexes work on text; D is possible but less likely than B.
  3. Final Answer:

    The query uses a function on email preventing index use -> Option B
  4. Quick Check:

    Functions on indexed columns block B-tree use [OK]
Hint: Functions on indexed columns disable B-tree index use [OK]
Common Mistakes:
  • Assuming B-tree indexes don't work on text
  • Ignoring query transformations on columns
  • Blaming index creation without checking query
5. You have a large table orders with columns order_id, customer_id, and order_date. You often query orders by customer_id and sort by order_date. How should you create an index to optimize these queries?
hard
A. Create a single-column B-tree index on order_date
B. Create separate B-tree indexes on customer_id and order_date
C. Create a hash index on customer_id
D. Create a composite B-tree index on (customer_id, order_date)

Solution

  1. Step 1: Understand query pattern

    Queries filter by customer_id and sort by order_date, so both columns matter together.
  2. Step 2: Choose index type for filtering and sorting

    A composite B-tree index on (customer_id, order_date) supports filtering by customer and sorting by date efficiently.
  3. Final Answer:

    Create a composite B-tree index on (customer_id, order_date) -> Option D
  4. Quick Check:

    Composite index matches filter + sort columns [OK]
Hint: Composite indexes speed up queries filtering and sorting on multiple columns [OK]
Common Mistakes:
  • Creating index only on sort column
  • Using separate indexes instead of composite
  • Choosing hash index which doesn't support sorting
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