慢查询往往就差一个合适的索引。先用 EXPLAIN ANALYZE 看执行计划。
看执行计划
EXPLAIN ANALYZE
SELECT * FROM orders WHERE user_id = 42 AND status = 'paid';如果出现 Seq Scan 且行数很大,通常需要加索引。
复合索引
CREATE INDEX idx_orders_user_status ON orders (user_id, status);注意最左前缀原则:(user_id, status) 能加速只查 user_id 的查询,但只查 status 用不上。
覆盖索引
把查询要用的列都放进索引(或 INCLUDE),可以让查询直接从索引返回,避免回表。