- Don’t query columns you don’t need, avoid using SELECT * FROM
- Use caching to reduce database load
- Normalize tables to ensure data consistency
- Use persistent connections
- Proper use of indexes improve performance
- Do not perform calculations on an index (eg: if you have an index for a column called salary, do not perform calculation such as salary * 2 > 10000)
- “LOAD DATA INFILE” is the fastest way to insert data into MySQL database (20 times faster than normal inserts)
- Use INSERT LOW PRIORITY or INSERT DELAYED if you want to delay inserts from happening until the table is free
- Use TRUNCATE TABLE rather than DELETE FROM if you are deleting an entire table (DELETE FROM delete row by row, whereas TRUNCATE TABLE deletes all at once)
- Always use EXPLAIN to examine if your select query is inefficient
- Use OPTIMIZE TABLE to reclaim unused space (Note: Table will be locked during optimisation, so only do it during low traffic time)
- Better to have 10 quick queries than 1 slow one
- MySQL can search on prefix of indexes (ie: If you have index INDEX (a,b), you don’t need an index on (a))
- Don’t use HAVING when you can use WHERE
- Use numeric values (rather than alphabetical values) when performing a join
Thanks