zoukankan      html  css  js  c++  java
  • Mysql大数据量分页查询优化

    1、常规方式

    直接使用LIMIT,适用数据量少的情况
    缺点:全表扫描,速度很慢,Limit限制的是从结果集的M位置处取出N条输出,其余抛弃。
    Demo:测试了千万级数据,分页查询1000万以后的分页,用时十几秒

    select * from order_shopcart order by id limit 10000000,10
    

    2、子查询利用索引

    子查询利用索引,查看执行计划,已经不是全表扫描了,执行计划的type是range、index
    以下两种方式类似,用时3秒多,已经快了很多
    Demo1:

    select * from order_shopcart where id>(
    select ID from order_shopcart order by id limit 10000000,1) limit 10
    

    Demo2:

    SELECT *
    FROM (SELECT `ID` AS `ID_1` FROM `order_shopcart`  ORDER BY ID LIMIT 10000000,10) AS `t`
    JOIN `order_shopcart`   ON `t`.`ID_1`=`order_shopcart`.`ID`
    

    3、利用BETWEEN..AND..

    最快的方式,执行计划的type是range
    缺点:查询字段的数据必须要连续的,如果数据不是连续的话,只能用上面的方式
    Demo:用时0.18秒!

    select * from order_shopcart where id BETWEEN 10000000 AND 10000010 order by id;
    
  • 相关阅读:
    Redis 启动与授权
    ssh客户端乱码
    centos修改oracle字符集
    netty 基础知识
    推送技术
    oracle 12C安装问题
    Labview学习之路(十三)常用快捷键积累
    Labview学习之路(十二)如何让图片做前面板背景
    UCOSIII(一)常用函数积累
    Keil出现错误
  • 原文地址:https://www.cnblogs.com/fanfan-90/p/13666191.html
Copyright © 2011-2022 走看看