In writing a recommendation for our Web development team on how to use MySQL, I came up with the following list, which I want to share: What kind of queries are bad for MySQL?
- Any query is bad. Send a query only if you must. (Hint: use caching like memcache or redis)
- Queries that examine many rows are bad. Try instead to
use…
SELECT col1 FROM table1 WHERE primary_key_column=SOMETHING
. Or at least
secondary_key_column=SOMETHING
. If it is still not possible, try to make the query examine the least amount of rows possible (zero is ideal, as we come to the first case here) - Queries with JOINS are bad. Try to denormalize the table to
avoid JOINS. Example: original query
SELECT t2.value FROM t2 JOIN t1 ON (t1.id=t2.tid) WHERE t1.orderdate=NOW()
. This can be denormalized by copying the column orderdate from table …