SQL Reference Guide
Revision Time: 2 mins
17. SQL Performance Tips Reference
Practical query optimization guidelines.
Avoid SELECT *
Return: TableAlways list target columns to prevent excessive network and disk reading overhead.
Syntax signature:
SELECT col1, col2 FROM table;Code snippet:
python
SELECT id, name FROM large_table;Expected Output:
Optimized memory scan.Remember: Always ensure correct syntax formatting when calling Avoid SELECT *.
Filter early
Return: ValueApply WHERE conditions aggressively before performing join queries to minimize Cartesian product sizes.
Syntax signature:
Filter first, join after.Code snippet:
python
SELECT * FROM (SELECT * FROM t1 WHERE val = 1) a JOIN t2 ON a.id = t2.id;Expected Output:
Reduced join table size.Remember: Always ensure correct syntax formatting when calling Filter early.
Use indexes
Return: ValueDefine index structures for columns queried inside WHERE, JOIN ON, and ORDER BY clauses.
Syntax signature:
CREATE INDEX idx ON t(col);Code snippet:
python
Enables fast search trees instead of slow linear scans.Expected Output:
Sub-millisecond index seek.Remember: Always ensure correct syntax formatting when calling Use indexes.
Avoid unnecessary DISTINCT
Return: ValueDistinct invokes an expensive memory sorting operation; ensure duplicates are truly possible before calling.
Syntax signature:
Drop DISTINCT if source table has primary key checks.Code snippet:
python
SELECT email FROM users; -- users.email is already uniqueExpected Output:
Bypasses sort buffer requirements.Remember: Always ensure correct syntax formatting when calling Avoid unnecessary DISTINCT.
Prefer EXISTS over IN
Return: ValueExists terminates matching scans instantly on first match, unlike IN which builds entire arrays.
Syntax signature:
WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.id = t.id)Code snippet:
python
SELECT * FROM orders o WHERE EXISTS (SELECT 1 FROM users u WHERE u.id = o.user_id);Expected Output:
Fast lookup scans.Remember: Always ensure correct syntax formatting when calling Prefer EXISTS over IN.
Limit returned columns
Return: ValueRestrict fields, especially when queries return large text objects or binary files.
Syntax signature:
SELECT needed_columns FROM table;Code snippet:
python
Avoid fetching large json/text column blobs.Expected Output:
Improved data transfer speeds.Remember: Always ensure correct syntax formatting when calling Limit returned columns.