BETWEEN range filtering in MySQL - Time & Space Complexity
When we use BETWEEN to filter data in a database, we want to know how the time to find matching rows changes as the data grows.
We ask: How does the number of rows affect the time it takes to filter with BETWEEN?
Analyze the time complexity of the following code snippet.
SELECT *
FROM orders
WHERE order_date BETWEEN '2023-01-01' AND '2023-01-31';
This query selects all orders placed in January 2023 by checking if the order_date falls within the given date range.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Checking each row's order_date to see if it falls in the date range.
- How many times: Once for every row in the orders table.
As the number of rows grows, the database checks more rows to find matches.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 checks |
| 100 | 100 checks |
| 1000 | 1000 checks |
Pattern observation: The number of checks grows directly with the number of rows.
Time Complexity: O(n)
This means the time to filter grows in a straight line as the table gets bigger.
[X] Wrong: "BETWEEN instantly finds the rows without checking many entries."
[OK] Correct: Without an index, the database must look at each row to see if it fits the range, so it takes longer as data grows.
Understanding how filtering with BETWEEN scales helps you explain query performance clearly and shows you know how databases handle data.
"What if we add an index on order_date? How would the time complexity change?"
Practice
BETWEEN operator do in a MySQL query?Solution
Step 1: Understand the purpose of BETWEEN
The BETWEEN operator is used to filter rows where a column's value falls between two values, including both ends.Step 2: Compare options with definition
Filters rows where a column's value is within a specified range, inclusive. correctly describes this inclusive range filtering. Other options describe different filters.Final Answer:
Filters rows where a column's value is within a specified range, inclusive. -> Option BQuick Check:
BETWEEN means inclusive range filter = D [OK]
- Thinking BETWEEN excludes the end values
- Confusing BETWEEN with equality (=)
- Assuming BETWEEN works only with numbers
age is between 18 and 30?Solution
Step 1: Recall correct BETWEEN syntax
The correct syntax uses BETWEEN value1 AND value2 without parentheses or other connectors.Step 2: Check each option
SELECT * FROM users WHERE age BETWEEN 18 AND 30; uses correct syntax. Options B, C, and D use invalid syntax with commas, TO, or &.Final Answer:
SELECT * FROM users WHERE age BETWEEN 18 AND 30; -> Option DQuick Check:
BETWEEN ... AND ... syntax = A [OK]
- Using commas inside BETWEEN
- Replacing AND with TO or &
- Adding parentheses around range values
products with a column price, what will this query return?SELECT * FROM products WHERE price BETWEEN 50 AND 100;Solution
Step 1: Understand BETWEEN inclusiveness
BETWEEN includes both boundary values, so prices 50 and 100 are included.Step 2: Analyze query result
The query returns products priced from 50 to 100 inclusive, matching All products with price from 50 up to 100, including both 50 and 100..Final Answer:
All products with price from 50 up to 100, including both 50 and 100. -> Option CQuick Check:
BETWEEN includes boundaries = C [OK]
- Thinking BETWEEN excludes boundary values
- Confusing BETWEEN with > and < operators
- Assuming BETWEEN works only for numbers
SELECT * FROM orders WHERE order_date BETWEEN '2023-01-01' AND '2023-12-31'Solution
Step 1: Check BETWEEN usage with dates
BETWEEN works perfectly with date values in MySQL when dates are in 'YYYY-MM-DD' format.Step 2: Verify query syntax
The query syntax is correct; semicolon is optional in many clients and not an error here.Final Answer:
No error; the query is correct. -> Option AQuick Check:
BETWEEN works with dates correctly = A [OK]
- Thinking BETWEEN can't filter dates
- Expecting semicolon is mandatory always
- Using wrong date formats like MM-DD-YYYY
SELECT * FROM employees WHERE hire_date BETWEEN '2020-01-01' AND '2022-12-31 23:59:59';What is the most likely reason and how to fix it?
Solution
Step 1: Understand data type of hire_date
If hire_date stores only DATE (no time), comparing with '2022-12-31 23:59:59' fails because time part is ignored or mismatched.Step 2: Fix the query
Use '2022-12-31' without time to match date-only values correctly.Final Answer:
hire_date column stores only dates without time; remove time part from end date. -> Option AQuick Check:
Match data type format in BETWEEN range = B [OK]
- Adding time to date-only columns in BETWEEN
- Assuming BETWEEN fails with datetime
- Using wrong date formats
Ready to prove it?
Pass the test and this pattern moves unknown
