表达式排序与性能要点
- ORDER BY 列 * 折扣 这类表达式也能排,按计算结果
- 别名也能排:ORDER BY 折扣价 DESC,前提是 SELECT 里有
- 排未索引列会触发 filesort,数据量大时很慢
- 排有索引的列可直接利用索引,避免额外排序
- LIMIT 配合 ORDER BY 只排需要的少量行更高效
- 深分页用大偏移会越翻越慢,改用游标式翻页
表达式排序与性能示例
SELECT name, price * discount AS final FROM product ORDER BY final DESC;
SELECT * FROM orders ORDER BY created_at DESC LIMIT 20;
避坑提醒:排序慢先查是不是 filesort:EXPLAIN 看 Extra 字段。能走索引就走索引,深分页改『上一页最大 id』游标法。