mysql limit分页查询优化
2014-03-29 15:53
639 查看
在mysql中进行分页查询时,一般会使用limit查询,而且通常查询中都会使用orderby排序。但是在表数据量比较大的时候,例如查询语句片段limit 10000, 20,数据库会读取10020条数据,然后把前10000条丢弃,把最后的20条返回给你,这种消耗是可以避免的,也是没必要的。下边介绍几种优化方法
优化1。
一般表中经常作为条件查询的列都会建立索引,例如如下查询Sql代码 SELECT msg_id, msg_content FROM message ORDER BY gmt_create desc LIMIT 100, 20; 可以写成如下方式Sql代码 SELECT msg_id, msg_content FROM message INNER JOIN ( SELECT msg_id FROM message ORDER BY gmt_create LIMIT 100, 20 ) AS page USING(msg_id);这样当前查询页的内容就只会在索引中进行,当得到当前页的msg_id再统一通过一个INNER JOIN得到最终要得到的数据详情,避免了对大量数据详情进行操作的消耗。
优化2.
例如方法一中的gmt_create是建立索引的列,而且你也知道要查询的时间范围,这样你就可以通过如下查询语句:Sql代码 SELECT msg_id, msg_content FROM message WHERE gmt_create BETWEEN #startTime# AND #endTime# ORDER BY gmt_create desc 这样数据库通过一个范围查询就可以得到想要的数据
优化3.
例子还是如上,我们可以在查询参数中显式指定一个查询时间,叫做lastVisitTime吧。我们查询第一页可以用如下语句:Sql代码 SELECT msg_id, msg_content FROM message ORDER BY gmt_create desc LIMIT 20 我们把读出来的数据的最后一条数据的gmt_create字段记录在lastVisitTime字段中,那么后边页的查询就可以用如下语句实现:Sql代码 SELECT msg_id, msg_content FROM message WHERE gmt_create < #lastVisitTime# ORDER BY gmt_create desc LIMIT 20;
优化1。
一般表中经常作为条件查询的列都会建立索引,例如如下查询Sql代码 SELECT msg_id, msg_content FROM message ORDER BY gmt_create desc LIMIT 100, 20; 可以写成如下方式Sql代码 SELECT msg_id, msg_content FROM message INNER JOIN ( SELECT msg_id FROM message ORDER BY gmt_create LIMIT 100, 20 ) AS page USING(msg_id);这样当前查询页的内容就只会在索引中进行,当得到当前页的msg_id再统一通过一个INNER JOIN得到最终要得到的数据详情,避免了对大量数据详情进行操作的消耗。
优化2.
例如方法一中的gmt_create是建立索引的列,而且你也知道要查询的时间范围,这样你就可以通过如下查询语句:Sql代码 SELECT msg_id, msg_content FROM message WHERE gmt_create BETWEEN #startTime# AND #endTime# ORDER BY gmt_create desc 这样数据库通过一个范围查询就可以得到想要的数据
优化3.
例子还是如上,我们可以在查询参数中显式指定一个查询时间,叫做lastVisitTime吧。我们查询第一页可以用如下语句:Sql代码 SELECT msg_id, msg_content FROM message ORDER BY gmt_create desc LIMIT 20 我们把读出来的数据的最后一条数据的gmt_create字段记录在lastVisitTime字段中,那么后边页的查询就可以用如下语句实现:Sql代码 SELECT msg_id, msg_content FROM message WHERE gmt_create < #lastVisitTime# ORDER BY gmt_create desc LIMIT 20;
相关文章推荐
- MySQL的limit用法和分页查询的性能分析及优化(转)
- mysql limit分页查询优化写法
- mysql limit分页查询优化写法
- MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适
- Mysql学习总结(37)——Mysql Limit 分页查询优化
- 关于mysql的limit用于分页查询的优化
- 如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案!(zz)
- 如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案!
- Mysql学习总结(37)——Mysql Limit 分页查询优化
- 如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案!
- MySQL limit 分页查询优化(数据量非常大的情况)
- mysql limit分页查询优化写法
- 如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案!(zz)
- 如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案!(zz)
- MySQL limit分页查询优化写法
- mysql limit分页查询优化写法
- MySql查询优化 百万级记录查询优化 limit分页查询
- mysql通过“延迟关联”进行limit分页查询优化的一个实例
- 使用子查询提高MySQL分页效率 limit
- mysql limit查询优化分析