ORDER BY with NULL values behavior in SQL - Time & Space Complexity
When sorting data with ORDER BY in SQL, the time it takes depends on how many rows there are.
We want to understand how sorting with NULL values affects the work the database does.
Analyze the time complexity of this SQL query:
SELECT id, name, score
FROM students
ORDER BY score NULLS LAST;
This query sorts students by their score, placing NULL scores at the end.
Look at what repeats during sorting:
- Primary operation: Comparing rows to order them by score.
- How many times: Comparisons happen many times, depending on the sorting method and number of rows.
Sorting work grows as the number of rows increases:
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 30 comparisons |
| 100 | About 700 comparisons |
| 1000 | About 10,000 comparisons |
Pattern observation: The number of comparisons grows faster than the number of rows, roughly like rows times log of rows.
Time Complexity: O(n log n)
This means sorting takes more time as rows increase, but not as fast as checking every pair; it grows in a balanced way.
[X] Wrong: "Sorting with NULL values is faster or slower than sorting without NULLs because NULLs are special."
[OK] Correct: NULLs only affect where rows appear, but sorting still compares all rows similarly, so time grows the same way.
Understanding how sorting scales helps you explain database performance clearly and confidently in real situations.
"What if we added an index on the score column? How would that change the time complexity of sorting with ORDER BY?"
Practice
ORDER BY clause do when sorting a column that contains NULL values by default in SQL?Solution
Step 1: Understand default
By default, when sorting ascending, SQL placesORDER BYbehaviorNULLvalues last becauseNULLmeans unknown or missing data.Step 2: Confirm
SinceNULLplacement in ascending orderNULLis considered neither high nor low, it appears after all actual values in ascending order.Final Answer:
It places NULL values at the end when sorting in ascending order. -> Option CQuick Check:
Default ascending sort puts NULL last [OK]
- Thinking NULLs are treated as zero
- Assuming NULLs appear first by default
- Believing NULLs cause errors in ORDER BY
score in ascending order but place NULL values first?Solution
Step 1: Recall correct syntax for NULL placement
The correct syntax placesNULLS FIRSTorNULLS LASTafter the sort direction (ASC or DESC).Step 2: Match syntax with options
ORDER BY score ASC NULLS FIRST usesORDER BY score ASC NULLS FIRST, which is the correct order of keywords.Final Answer:
ORDER BY score ASC NULLS FIRST -> Option AQuick Check:
NULLS FIRST comes after ASC/DESC [OK]
- Placing NULLS FIRST before column name
- Mixing order of ASC/DESC and NULLS FIRST
- Using NULLS FIRST without ASC or DESC
students with column grade containing values (85, NULL, 90, 70), what is the result of this query?SELECT grade FROM students ORDER BY grade DESC NULLS LAST;
Solution
Step 1: Sort grades descending with NULLs last
Descending order sorts from highest to lowest: 90, 85, 70. NULLs go last as specified.Step 2: Arrange final output
So the order is 90, 85, 70, then NULL at the end.Final Answer:
[90, 85, 70, NULL] -> Option BQuick Check:
DESC with NULLS LAST puts NULL at end [OK]
- Placing NULL at start despite NULLS LAST
- Ignoring NULLS LAST and using default NULL position
- Sorting ascending instead of descending
SELECT name FROM employees ORDER BY salary NULLS FIRST ASC;
Solution
Step 1: Check correct syntax order for ORDER BY
The correct syntax isORDER BY salary ASC NULLS FIRST. NULLS FIRST must come after ASC or DESC.Step 2: Identify error in given query
The query places NULLS FIRST before ASC, which is invalid syntax.Final Answer:
The order of NULLS FIRST and ASC is incorrect. -> Option AQuick Check:
NULLS FIRST must follow ASC/DESC [OK]
- Placing NULLS FIRST before ASC/DESC
- Adding commas in ORDER BY clause
- Assuming NULLS FIRST is invalid with ASC
price ascending but ensure that products with unknown price (NULL) appear at the top. Which query achieves this correctly?Solution
Step 1: Understand requirement for NULL placement
We want ascending order butNULLvalues first, so useNULLS FIRSTafterASC.Step 2: Check syntax correctness
SELECT * FROM products ORDER BY price ASC NULLS FIRST; usesORDER BY price ASC NULLS FIRST, which is valid and meets the requirement.Final Answer:
SELECT * FROM products ORDER BY price ASC NULLS FIRST; -> Option DQuick Check:
ASC with NULLS FIRST puts NULLs on top [OK]
- Placing NULLS FIRST before ASC
- Using NULLS LAST instead of NULLS FIRST
- Misordering keywords causing syntax errors
Ready to prove it?
Pass the test and this pattern moves unknown
