MySql分页查询优化思路

在编写mysql分页查询时需要考虑效率问题,在网上查了几篇文章简单学习了一下

①http://www.manongjc.com/article/1087.html

②http://www.jb51.net/article/46015.htm

 

mysql分页语句是select id from table limit x, y影响效率的主要是x的大小。

 

在第二篇文章采取记录当前页idmaxmin来实现具体如下:

select idfrom table where id > max limit m,n

这样写因为对比的是当前页而非第一页所以m的值小于x值,效率会有所提升。

这样做可行的前提是id不能是重复的,如果想要查找物品质量的一个范围该如何去做呢?我的思路如下

 

表:goods_testidweightdatetime

id为主键在之后不会使用,weight是质量,datetime是物品登入数据库的毫秒级的时间

假设有物品质量分别为:1,1,1,3,3,3,3,4,4,5,5,6

 

假设第一页是:前4个(1,1,1,3,顺序为质量升序时间降序,其中max3min1

如果用第二篇文章中的方法显示下一页就会出现显而易见的错误,我是利用datetime属性来避免错误的如下:

一、下一页

selectweight from goods_test where weight = max and datetiem > maxdatetime orderby datetime limit 0,4

如果得到的result小于4,再使用

selectweight from goods_test where weight > max order by datetime limit0,(4-result)

 

!!!:如果是隔页查询就要注意要变limit了,假设跳到第三页,预期为(4,5,5,6),语句如下:

二、第三页

selectweight from goods_test where weight = max and datetiem > maxdatetime orderby datetime limit 4,4

没有任何结果,但是上述语句如果没有limit的话会有3个结果,记录result3

select weight from goods_test where weight > max order by datetimelimit4-result,4

 

 

我的优化思路就是这样,还没有具体实现仅供参考^_^

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值