mysql优化limit分页
来源:互联网 发布:最新的搞笑网络短剧 编辑:程序博客网 时间:2024/05/16 15:16
系统需要进行分页操作时,通常会使用limit加上偏移量的方法实现,同时加上合适的order by子句,如果有对应的索引效率会不错。
但是一个常见令人头疼的问题就是当偏移量较大时,例如limit 10000,20这样的查询,这时MySQL需要查询10020条记录然后只返回最后20条,前面的10000条记录将被抛弃,代价较高。因此要么限制分页的数量,要么优化大偏移量的性能。
优化limit的方法:
1、尽可能的使用索引覆盖扫描或者适当的使用延迟关联来实现索引覆盖扫描。
例如:select film_id,film_name from film order by title limit 50,5;假设有索引(title,film_id)
可以将上述语句改为:
select film_id,film_name from film film join(select film_id from film order by title limit 50,5) as lim on(lim.film_id=film.film_id);
这里使用延迟关联将大大提升查询效率,让MySQL扫描尽可能少的页面,获取需要访问的记录后再根据关联列回原表插叙需要的所有列。
2、limit和offset的问题,其实是offset的问题,它会导致MySQL扫描大量不需要的行然后再抛弃掉。如果可以使用书签记录上次取数据的位置,那么下次就可以直接从该书签记录的位置开始扫描,这样就可以避免使用offset。当按`时间`翻页的时候, 由于已知记录中`时间`是也是递增的,所以可以用主键`id`当做书签。
例如第一次查询时:
select * from register order by re_dt desc limit 10;
由查询结果可以知道主键`id`,假设返回记录中最小主键`id`为15460,则进行下一页查询的时候可以从15460开始查询,而不必使用offset。
select * from register where id <15460 order by re_dt desc limit 10;
- mysql分页limit优化
- MySQL 优化Limit分页
- mysql分页limit 优化
- mysql 分页limit 优化
- mysql优化limit分页
- mysql limit分页优化
- Mysql limit分页优化
- MySQL Limit 分页优化
- mysql limit 分页查询优化
- mysql limit分页优化方法
- mysql进阶:优化LIMIT分页
- mysql limit 分页语句的优化
- Mysql limit 分页用法及优化
- mysql limit分页优化方法分享
- mysql limit分页查询优化写法
- mysql limit分页优化方法分享
- MySQL的LIMIT与分页优化
- mysql limit分页优化方法分享
- html iframe和frame
- 为什么ie设置加载状态后一直加载,进不去页面
- uva 621
- 关于iOS百度地图的基本使用
- bash脚本语言
- mysql优化limit分页
- IOS开发UI-------label
- 《从零开始学Swift》学习笔记(Day 61)——Core Foundation框架之内存管理
- MySQL中DATETIME、DATE和TIMESTAMP类型的区别
- openssl AES 加密算法及代码实例
- #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif
- uva 10106
- 视音频数据处理入门:AAC音频码流解析
- 学习笔记-解析XML