慢查询往往就差一个合适的索引。先用 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),可以让查询直接从索引返回,避免回表。

<