SQL索引优化,菜单列表优化

SQL索引优化,菜单列表优化现象:在系统中几个数据量大的列表页面,首次进入页面未增加筛选条件,导致进入的列表查询速度非常慢。分析:通过SQL查看,是做了count求和查询,然后根据总的记录数来做分页处理。查询速度慢的 原因是什么?in

SQL索引优化,菜单列表优化

SQL索引优化,菜单列表优化

现象: 在系统中几个数据量大的列表页面,首次进入页面未增加筛选条件,导致进入的列表查询速度非常慢。 分析: 通过SQL查看,是做了count求和查询,然后根据总的记录数来做分页处理。 查询速度慢的 原因是什么?   innodb引擎在统计方面和myisam是不同的,Myisam内置了一个计数器,所以在使用 select count(*) from table 的时候,直接可以从计数器中取出数据。而innodb必须全表扫描一次方能得到总的数量。

方法: 方案1:进来的页面是空白,即没有填写查询条件的情况下,列表页为空,根据用户选择的条件来筛选。 方案2:进来的页面列表页的记录数按默认值来处理,比如:默认100条,选择该方案

可以将首次进入的页面,根据时间来倒排,比如:根据今天的时间,在时间的字段上面加上索引。 比如是日志内的数据很大,可以按时间最近3小时内的数据来展示。

通过EXPLAIN来分析索引的使用情况。将需要索引关联的字段加上相应的索引。 在首次进入列表(需要兼容非首次进入的情况,根据查询Request对象的属性来判断),可以越过count查询,count查询统计很慢,可以固定查询100条,然后在前端分页的列表上面, 根据分页前端来做列表数据的分割来展示。

order by 索引列Id desc limit 100

代码语言:javascript代码运行次数:0运行复制
//检测是否首次进入列表页面
        boolean firstAccessFlag = false;
        try {
            Field[] reqField = queryReqVO.getClass().getDeclaredFields();
            for (Field field : reqField) {
                field.setAccessible(true);
                if(field.get(queryReqVO) != null){
                    firstAccessFlag = true;
                    break;
                }
            }
        }catch (Exception e) {
            log.error("check queryReqVO exception:",e);
        }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2022-02-28,如有侵权请联系 cloudcommunity@tencent 删除sql分页数据索引优化

发布者:admin,转转请注明出处:http://www.yc00.com/web/1754988342a5224423.html

相关推荐

  • SQL索引优化,菜单列表优化

    SQL索引优化,菜单列表优化现象:在系统中几个数据量大的列表页面,首次进入页面未增加筛选条件,导致进入的列表查询速度非常慢。分析:通过SQL查看,是做了count求和查询,然后根据总的记录数来做分页处理。查询速度慢的 原因是什么?in

    1月前
    210

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信