美文网首页
limit语句查询优化

limit语句查询优化

作者: 吕艳凯 | 来源:发表于2020-04-14 15:38 被阅读0次
    limit语句查询
    SELECT * FROM acpf_bt_questions limit 0,20
    SELECT * FROM acpf_bt_questions limit 2000000,20
    

    分页查询一般使用(页数-1)* 页数据量得到偏移量
    在limit查询中,是先找到偏移量所在行,然后在查询返回所需结果集行数
    当偏移量慢慢增大,找到偏移量所在行需要扫描的数据就会越多,响应的就会越来越慢,当有几百万条上千万条数据时,时间开销非常的大

    如何进行优化?

    使用子查询的方式优化
    偏移量查询放在子查询中,使用覆盖索引提高查询效率,子查询得到起始id
    在外部查询,直接指定了起始id范围,避免了大量扫描数据,从而优化了查询效率

    SELECT * FROM acpf_bt_questions WHERE id >= (select id from acpf_bt_questions limit 2000000,1) limit 20
    

    当然也可以利用查询连表的方式,原理一样

    需要注意的是:
    只使用limit的时候,取出来的结果集数据是乱序的
    用order by id <DESC>即可解决
    另外:当order by 对含有相同值列排序时,会出现乱序现象,需要使用id自增主键排序
    具体可参见:https://www.jianshu.com/p/66bfc73bfe05

    相关文章

      网友评论

          本文标题:limit语句查询优化

          本文链接:https://www.haomeiwen.com/subject/zzktvhtx.html