Showing posts with label Query Optimization. Show all posts
Showing posts with label Query Optimization. Show all posts

Friday, August 21, 2026

SQL Performance Tuning —2 (Query Optimization)


11. Why avoid SELECT *?

Answer: It retrieves unnecessary columns, increasing I/O, network traffic, memory usage, and potentially preventing covering-index benefits.


12. Why should filters be applied as early as practical?

Answer: Reducing rows early can decrease the amount of data processed by joins, aggregations, and sorts.


13. Why can JOIN cause performance problems?

Common reasons:

  • Missing indexes
  • Large intermediate result sets
  • Incorrect join conditions
  • Many-to-many joins
  • Joining before filtering

14. What is a Cartesian Product?

When every row from one table is matched with every row from another table.

SELECT *
FROM A
CROSS JOIN B;

If A has 10,000 rows and B has 5,000:

50 million combinations.


15. How do you optimize a JOIN?

Check:

  1. Join predicates
  2. Indexes on join columns
  3. Data types
  4. Cardinality
  5. Filtering
  6. Execution plan

16. Why can functions in WHERE clauses hurt performance?

Example:

WHERE UPPER(Name) = 'ANITA'

The database may be unable to efficiently use an index on Name.


17. What is a SARGable query?

A query whose predicate allows the optimizer to efficiently use an index.

Example:

WHERE OrderDate >= '2026-01-01'

is generally more index-friendly than:

WHERE YEAR(OrderDate) = 2026

18. IN vs EXISTS — which is faster?

Answer: Neither is universally faster. The optimizer, data distribution, indexes, and query shape determine the result.


19. EXISTS vs COUNT(*) > 0?

For an existence check, EXISTS often communicates the intent better and may allow the engine to stop once a qualifying row is found.

WHERE EXISTS
(
    SELECT 1
    FROM Orders o
    WHERE o.CustomerID = c.CustomerID
)

20. Why can DISTINCT be expensive?

Answer: It may require sorting or hashing a large result set to eliminate duplicates.