• SQL优化-大数据量分页优化


      百万数据量SQL,在进行分页查询时会出现性能问题,例如我们使用PageHelper时,由于分页查询时,PageHelper会拦截查询的语句会进行两个步骤

      1.添加 select count(*)from (原查询sql) ,用于统计查询的总数

      2.拼接 limit startPage,number 用于分页

      

      此时有两个问题

        第一个问题是:

          用于统计的 select count(*)from (原查询sql)在数据量大时速度慢

        第二个问题时:

          limit startPage,number 在大数据量时效率低

      

      解决方案:

        第一个问题:

          在数据量过大时,不使用分页插件PageHelper,select count(*)from (原查询sql)固定返回一个固定值给到前端,例如千万级数据,固定返回1千万

        第二个问题:

          在数据量过大时,不使用分页插件PageHelper ,使用join或者子查询去优化

          例如 id为主键,name为非唯一索引

            优化前:

            select id,name,brand from table where name=‘xxx’ limit 100000,10

            优化后:

            select aa.id,name,brand from table inner join (select id from table bb where name ='xxx' limit 100000,10) bb where aa.id=bb.id

            原因是解决

              非聚簇索引的叶子节点是聚簇索引的节点值,聚簇索引的叶子节点值才是数据的物理位置,

            优化前会花费大量的随机IO到找到聚簇索引,优化后则减少了寻找聚簇索引位置的时间;

  • 相关阅读:
    html5——渐变
    html5——背景
    html5——边框
    html5——私有前缀
    html5——盒子模式
    html5——文本阴影
    html5——颜色
    html5——css选择器
    html5——DOM扩展
    html5——多媒体(一)
  • 原文地址:https://www.cnblogs.com/july-sunny/p/12240596.html
Copyright © 2020-2023  润新知