MySQL优化之 —— LIMIT分页查询优化
对常见的小规模数据的分页查询可以通过覆盖索引提高性能。
但是对于大数据量应采取其他优化措施。
方案一:覆盖索引+JOIN
- NOTE: 实际使用需要根据不同环境测试,寻求查询数据量对查询效率曲线的极值点。数据量高于极值点时才可考虑JOIN 优化,否则属画蛇添足行为!
此处综合考虑对 “ORDER BY + LIMIT” 的优化
ORDERBY[SOMETHING]LIMIT A,B
JOIN ON
EXPLAINSELECT[SOMETHING]FROM`TABLE``T`JOIN(SELECT ID
FROM`TABLE`ORDERBY[SOMETHING]LIMIT5000000,10)`T_INDEX`ON`T`.ID =`T_INDEX`.ID;
EXPLAINSELECT[SOMETHING]FROM`TABLE``T`JOIN(SELECT ID
FROM`TABLE`ORDERBY[SOMETHING]LIMIT5000000,10)`T _INDEX`USING(ID);
方案二:利用键值
仅限于主键自增,且保证ID连续无中断(例如:历史删除均是伪删除)。
- WHERE
假设自增从137开始:
EXPLAINSELECT[SOMETHING]FROM`TABLE`WHERE ID >=(137+5000000)LIMIT10;
- BETWEEN AND
EXPLAINSELECT[SOMETHING]FROM`TABLE`WHERE ID BETWEEN[VAL1]AND[VAL2];
除此之外,还可以考虑缓存分页等手段进行优化。
版权归原作者 SurfingMaster 所有, 如有侵权,请联系我们删除。