MySql分页查询优化思路

    xiaoxiao2021-03-25  150

    在编写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

     

     

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

    转载请注明原文地址: https://ju.6miu.com/read-10644.html

    最新回复(0)