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



