原 SQL:
SELECT * FROM orders WHERE DATE(created_at) = CURDATE() AND status = 1;
问题:对索引列用了函数,导致全表扫描 800 万行。
优化后:
SELECT id, order_no, amount FROM orders \nWHERE created_at >= CURDATE() AND created_at < CURDATE() + INTERVAL 1 DAY \nAND status = 1;
再加联合索引 (status, created_at),并改成覆盖索引,耗时 80ms。