Bird
Raised Fist0
DBMS Theoryknowledge~20 mins

B-tree index structure in DBMS Theory - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
B-tree Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
How does a B-tree maintain balance?

In a B-tree index, what mechanism ensures that the tree remains balanced after insertions and deletions?

ABy storing all keys in a single sorted list
BBy rotating nodes left or right like in AVL trees
CBy rebuilding the entire tree after every insertion
DBy splitting or merging nodes to keep all leaf nodes at the same depth
Attempts:
2 left
💡 Hint

Think about how B-trees keep their height minimal and uniform.

query_result
intermediate
1:30remaining
Number of keys in a B-tree node

Consider a B-tree of order 4 (each node can have at most 4 children). What is the maximum number of keys a single node can hold?

A3
B4
C5
D2
Attempts:
2 left
💡 Hint

Remember, a node with n children has n-1 keys.

📋 Factual
advanced
2:30remaining
Identify the correct B-tree insertion step

Which SQL-like pseudocode correctly describes the step to split a full B-tree node during insertion?

DBMS Theory
IF node.isFull() THEN
  median = node.keys[middle_index]
  leftNode = node.keys[0 to middle_index-1]
  rightNode = node.keys[middle_index+1 to end]
  parent.insertKey(median)
  parent.insertChild(leftNode)
  parent.insertChild(rightNode)
END IF
AMerge node with sibling and push median down to child
BDelete median key and redistribute keys evenly
CSplit node into two nodes around median key and push median up to parent
DReplace node keys with median key only
Attempts:
2 left
💡 Hint

Think about how B-tree insertion handles full nodes.

optimization
advanced
2:00remaining
Choosing B-tree order for disk storage

Why is a higher order (more children per node) preferred for B-trees used in disk-based databases?

ABecause it allows storing keys in random order
BBecause it reduces the tree height and number of disk reads
CBecause it increases the number of keys per node, causing more disk reads
DBecause it makes the tree unbalanced and faster to traverse
Attempts:
2 left
💡 Hint

Consider how disk access speed affects search performance.

🔍 Analysis
expert
3:00remaining
Diagnose B-tree search failure

A B-tree search for key 42 returns no result, but the key exists in the tree. Which issue below most likely causes this problem?

AThe tree nodes are not properly linked after a node split
BThe key comparison uses <= instead of <
CThe tree height is too large
DThe root node has fewer keys than allowed
Attempts:
2 left
💡 Hint

Think about what happens if pointers between nodes are incorrect.

Practice

(1/5)
1. What is the main purpose of a B-tree index in a database?
easy
A. To speed up data searching by organizing data in a balanced tree
B. To store data in a flat file for easy access
C. To encrypt data for security
D. To backup data automatically

Solution

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

    A B-tree index organizes data in a balanced tree structure to make searching faster.
  2. Step 2: Compare options with B-tree purpose

    Only To speed up data searching by organizing data in a balanced tree describes speeding up search using a balanced tree, which matches B-tree index use.
  3. Final Answer:

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

    B-tree index = speed up search [OK]
Hint: B-tree indexes speed up search by balanced tree structure [OK]
Common Mistakes:
  • Confusing B-tree with encryption or backup
  • Thinking B-tree stores data flatly
  • Assuming B-tree slows down all operations
2. Which of the following is the correct way to create a B-tree index on column name in SQL?
easy
A. CREATE INDEX idx_name BY BTREE ON table_name (name);
B. CREATE BTREE INDEX idx_name ON table_name (name);
C. CREATE INDEX idx_name ON table_name (name);
D. CREATE INDEX idx_name USING BTREE ON table_name (name);

Solution

  1. Step 1: Recall SQL syntax for B-tree index creation

    The standard syntax to specify B-tree index is using USING BTREE clause.
  2. Step 2: Check each option's syntax

    CREATE INDEX idx_name USING BTREE ON table_name (name); uses CREATE INDEX idx_name USING BTREE ON table_name (name); which is correct. CREATE INDEX idx_name ON table_name (name); creates an index but does not specify B-tree explicitly. Options B and D have invalid syntax.
  3. Final Answer:

    CREATE INDEX idx_name USING BTREE ON table_name (name); -> Option D
  4. Quick Check:

    Correct syntax includes USING BTREE [OK]
Hint: Use 'USING BTREE' clause to specify B-tree index in SQL [OK]
Common Mistakes:
  • Omitting USING BTREE when required
  • Using BY or incorrect keywords
  • Assuming default index is always B-tree
3. Given a B-tree index on column age, what will be the result of the query:
SELECT * FROM users WHERE age BETWEEN 20 AND 30;?
medium
A. The query will scan the entire table without using the index
B. The query will use the B-tree index to quickly find rows with age between 20 and 30
C. The query will return an error because BETWEEN is not supported with B-tree
D. The query will only return rows where age is exactly 20 or 30

Solution

  1. Step 1: Understand B-tree index support for range queries

    B-tree indexes support range queries efficiently, such as BETWEEN.
  2. Step 2: Analyze query behavior with B-tree index

    The query uses BETWEEN 20 AND 30, so the B-tree index will help find all rows in that range quickly.
  3. Final Answer:

    The query will use the B-tree index to quickly find rows with age between 20 and 30 -> Option B
  4. Quick Check:

    B-tree supports range queries = fast search [OK]
Hint: B-tree indexes speed up range queries like BETWEEN [OK]
Common Mistakes:
  • Thinking B-tree only supports exact matches
  • Assuming BETWEEN causes errors
  • Believing full table scan always happens
4. A developer created a B-tree index on column salary but notices queries using salary are still slow. Which of the following is a likely cause?
medium
A. The index was created but the column has many NULL values and queries filter on NULL
B. The B-tree index automatically speeds up all queries regardless of conditions
C. The database does not support B-tree indexes
D. The index was created on a different column by mistake

Solution

  1. Step 1: Identify why B-tree index might not help

    If the column has many NULL values and queries filter on NULL, B-tree index may not be used effectively.
  2. Step 2: Evaluate other options

    The B-tree index automatically speeds up all queries regardless of conditions is false because indexes don't speed up all queries automatically. The database does not support B-tree indexes is unlikely if B-tree index was created. The index was created on a different column by mistake is possible but less likely than D given the scenario.
  3. Final Answer:

    The index was created but the column has many NULL values and queries filter on NULL -> Option A
  4. Quick Check:

    NULL values can reduce B-tree index effectiveness [OK]
Hint: NULL values can prevent B-tree index use in queries [OK]
Common Mistakes:
  • Assuming index always speeds up queries
  • Ignoring NULL value impact
  • Believing database lacks B-tree support without checking
5. You have a large table with millions of rows and want to optimize queries that search for customers by last name prefix (e.g., names starting with 'Sm'). How can a B-tree index help, and what is a limitation you must consider?
hard
A. B-tree index cannot help prefix searches; use hash index instead
B. B-tree index speeds up prefix searches and has no impact on insert speed
C. B-tree index can speed up prefix searches, but it may slow down insert operations
D. B-tree index only works for numeric columns, so it cannot help here

Solution

  1. Step 1: Understand B-tree index support for prefix searches

    B-tree indexes support prefix searches efficiently by traversing the tree to matching keys.
  2. Step 2: Consider performance trade-offs

    While B-tree indexes speed up reads, they can slow down insert and update operations because the tree must be maintained.
  3. Final Answer:

    B-tree index can speed up prefix searches, but it may slow down insert operations -> Option C
  4. Quick Check:

    B-tree = fast prefix search + slower inserts [OK]
Hint: B-tree helps prefix search but slows inserts due to tree maintenance [OK]
Common Mistakes:
  • Thinking B-tree can't do prefix searches
  • Ignoring insert/update slowdown
  • Believing B-tree only works on numbers