Bird
Raised Fist0
DBMS Theoryknowledge~5 mins

B-tree index structure in DBMS Theory - Time & Space Complexity

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
Time Complexity: B-tree index structure
O(log n)
Understanding Time Complexity

When using a B-tree index, we want to know how fast it helps find data as the database grows.

We ask: How does the search time change when the number of records increases?

Scenario Under Consideration

Analyze the time complexity of searching a value in a B-tree index.


-- Pseudocode for searching a B-tree index
function searchBTree(node, key) {
  if node is leaf:
    return find key in node.keys
  else:
    find child pointer where key fits
    return searchBTree(child pointer, key)
}
    

This code searches for a key by moving down the tree from root to leaf.

Identify Repeating Operations

Look at what repeats during the search:

  • Primary operation: Moving down one level in the tree and searching keys in that node.
  • How many times: Once per tree level until reaching a leaf.
How Execution Grows With Input

As the number of records grows, the tree grows taller but slowly.

Input Size (n)Approx. Operations
10About 2-3 node checks
100About 3-4 node checks
1000About 4-5 node checks

Pattern observation: The number of steps grows slowly, roughly adding one step for every big jump in data size.

Final Time Complexity

Time Complexity: O(log n)

This means the search time grows slowly as the data grows, making B-tree searches efficient even for large data.

Common Mistake

[X] Wrong: "Searching a B-tree is as slow as scanning all records one by one."

[OK] Correct: B-tree uses a tree structure to jump quickly to the right place, so it does not check every record.

Interview Connect

Understanding B-tree time complexity shows you know how databases keep searches fast, a key skill for working with real data.

Self-Check

"What if the B-tree nodes could hold twice as many keys? How would that affect the search time complexity?"

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