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

//检测是否首次进入列表页面
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);
}

SQL索引优化,菜单列表优化的更多相关文章

  1. 数据库性能优化:SQL索引

    SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱. 1.1 什么是索引? SQL索引有两种,聚集索引和非聚集索引 ...

  2. SQL索引一步到位(此文章为“数据库性能优化二:数据库表优化”附属文章之一)

    SQL索引一步到位(此文章为“数据库性能优化二:数据库表优化”附属文章之一) SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭 ...

  3. 数据库性能优化一:SQL索引一步到位

    SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱. 1.1 什么是索引? SQL索引有两种,聚集索引和非聚集索引 ...

  4. paip.sql索引优化----join 代替子查询法

    paip.sql索引优化----join 代替子查询法 作者Attilax ,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.n ...

  5. SQL通用优化方案(where优化、索引优化、分页优化、事务优化、临时表优化)

    SQL通用优化方案:1. 使用参数化查询:防止SQL注入,预编译SQL命令提高效率2. 去掉不必要的查询和搜索字段:其实在项目的实际应用中,很多查询条件是可有可无的,能从源头上避免的多余功能尽量砍掉, ...

  6. SQL索引优化方法

    SQL索引优化方法 以下是代码片段: ROW_NUMBER() OVER(ORDER BY ResumeCreateTime DESC) as [RowID] ,[TopDegree] ,[Degre ...

  7. SQL Server 聚合函数算法优化技巧

    Sql server聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了一个重点,一个程序优化的好不好直接决定了这个程序的声明周期.Sql server聚合函数对一组值 ...

  8. sql server之数据库语句优化

    三.只返回需要的数据 返回数据到客户端至少需要数据库提取数据.网络传输数据.客户端接收数据以及客户端处理数据等环节,如果返回不需要的数据,就会增加服务器.网络和客户端的无效劳动,其害处是显而易见的,避 ...

  9. mysql系列十一、mysql优化笔记:表设计、sql优化、配置优化

    可以从这些方面进行优化: 数据库(表)设计合理 SQL语句优化 数据库配置优化 系统层.硬件层优化 数据库设计 关系数据库三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非 ...

  10. SQL优化之语句优化

    昨天与大家分享了SQL优化中的索引优化,今天给大家聊一下,在开发过程中高质量的代码也是会带来优化的 网上关于SQL优化的教程很多,但是比较杂乱.整理了一下,写出来跟大家分享一下,其中有错误和不足的地方 ...

随机推荐

  1. 2021云栖大会开源引力峰会重磅发布的战略合作,Grafana服务到底是什么?

    简介: 这几天关注云栖大会的小伙伴一定会发现阿里巴巴合伙人.阿里云高级研究员蒋江伟(小邪)在云栖大会开源引力峰会的演讲中,特别提到了一个叫 Grafana 服务的产品,并特意花费一页 PPT 介绍了这 ...

  2. python语言中的装饰器详解

        装饰器是一个用于封装函数或类的代码的工具.它显式地将封装器应用到函数或类上,从而使它们选择加入到装饰器的功能中.对于在函数运行前处理常见前置条件(例如确认授权),或在函数运行后确保清理(例如输 ...

  3. dotnet 如何将 Microsoft.Maui.Graphics 对接到 UNO 框架

    本文将和大家介绍如何将 Microsoft.Maui.Graphics 对接到 UNO 框架里面.一旦完成 Microsoft.Maui.Graphics 对接,即可让 UNO 框架复用现有的许多绘制 ...

  4. WPF 已知问题 在 ObservableCollection 的 CollectionChanged 修改集合内容将让 UI 显示错误

    本文记录一个 WPF 已知问题,在 ObservableCollection 的 CollectionChanged 事件里面,绕过 ObservableCollection 的异常判断逻辑,强行修改 ...

  5. Oracle、达梦:_ 英文下划线 让LIKE查询失效的解决方案:ESCAPE关键字

    oracle/dm:_ 英文下划线让like查询失效的解决方案:ESCAPE关键字 -- 可以查询出带(\)的值 SELECT "f1","f2" FROM & ...

  6. Intel Pentium III 512MB内存 i815集显上安装Ubuntu Server 14.04

    自己的御用奔腾III PC,接口齐全,准备安装Ubuntu Server 14.04 i386,继续发挥余热,物尽其用. 基本配置: CPU: Intel Pentium III 1000MHz, 2 ...

  7. 【爬虫案例】用Python爬取百度热搜榜数据!

    目录 一.爬取目标 二.编写爬虫代码 三.同步视频讲解 四.完整源码 一.爬取目标 您好,我是@马哥python说,一名10年程序猿. 本次爬取的目标是:百度热搜榜 分别爬取每条热搜的: 热搜标题.热 ...

  8. k8s错误集合

    1.etcd没有启动的 [root@mcwk8s03 ~]# kubectl get nodesUnable to connect to the server: context deadline ex ...

  9. js 数组按指定字段转map-list结构

    js 数组按指定字段转map-list结构 背景介绍 在开发过程中经常会出现接口返回整个数组,我们需要将数组进行二次处理,如下格式按照不同功能模块(type)进行数据拆分 原始数据 const lis ...

  10. C# winform GDI+ 五子棋 (二):根据博弈算法写的人机AI(抄的别人的)

    白棋是ai,最后ai走赢了. 根据博弈算法的一个AI.遍历深度6层,下子很慢.其实我是从别人的代码里复制的算法,改到自己上面用了. 这个博弈算法 class GameAI { /// <summ ...