考虑使用 INNER JOIN 而不是 LEFT JOIN 或 RIGHT JOIN,因为 INNER JOIN 通常性能更好,除非你确实需要保留那些不匹配的行。
调整 JOIN 的顺序,将结果集较小的表放在左边,这样可以减少中间结果集的大小。
避免 SELECT *:
只查询需要的列,而不是使用 SELECT *,因为这样会返回更多的数据,增加查询的负担。
-- 不好的做法SELECT*FROM users;-- 较好的做法SELECT id, name FROM users;
子查询优化:
尽量将子查询改写为 JOIN 操作,因为 MySQL 对子查询的处理有时效率较低。
-- 子查询SELECT*FROM users WHERE id IN(SELECT user_id FROM orders WHEREstatus='completed');-- 可改写为 JOINSELECT u.*FROM users u JOIN orders o ON u.id = o.user_id WHERE o.status='completed';