zoukankan      html  css  js  c++  java
  • mysql 查询优化~ 分页优化讲解

    一 简介:今天咱们来聊聊mysql的分页查询
    二 语法
         LIMIT [offset,] rows
         offset是第多少条
         rows代表多少条之后的行数
        性能消耗
        select * from table limit 0,10;
        select * from table limit 1000,10;
        很快
        select * from table limit 3000000,10;
        非常慢了

    三  优化 
       原因:比如你要查询 300w开始后面10条数据;mysql会读取300w加10条这么多的数据,只不过 过滤后返回最后10条而已!!!所以导致分页查询越到后面越慢
      1 直接使用select本身进行查询,并不进行任何优化
         SELECT * FROM 表名称 LIMIT M,N
         select * from table limit 3000000,10
      2 采用唯一性索引(最好是主键)进行范围限定再进行分页处理
         改写后
         select * from table where id>3000000 limit 10;
     3  按照索引分页后回表读取行的方式
         改写后
         select table.* from table inner join ( select id from table limit 3000000,10 ) as tmp on tmp.id=table.id;
    4  限定查询范围,锁定页数
        select * from table limit 1000,10; 只限定页

    四 总结

      对于无法通过优化解决的分页查询,建议通过1 减少表数据量 2 减少查询频率 3 设置读写分离进行解决

  • 相关阅读:
    错误解决mysql
    (一)熟悉执行流程——基于ThinkPHP3.2的内容管理框架OneThink学习
    版权控制之zend guard 6.0使用教程
    IP进制站群原理
    多线程更新已排序的Datagridview数据,造成数据错位
    压缩html 减小存储空间
    DataGridView导入导出excel
    软件下载目录
    java反射
    JTA
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/8473161.html
Copyright © 2011-2022 走看看