优化count

创建一张表用来记录日志表的总数据量:

create table log_counter(logcount bigint not null
)engine = innodb default CHARSET = utf8;

在每次插入数据之后,更新该表 :

<update id="updateLogCounter" >update log_counter set logcount = logcount + 1
</update>

在进行分页查询时, 获取总记录数,从该表中查询既可。

<select id="countLogFromCounter" resultType="long">select logcount from log_counter limit 1
</select>

优化 limit

在进行分页时,一般通过创建覆盖索引,能够比较好的提高性能。一个非常常见,而又非常头疼的分页场景就是 "limit 1000000,10" ,此时MySQL需要搜索出前1000010 条记录后,仅仅需要返回第 1000001 到 1000010 条记录,前1000000 记录会被抛弃,查询代价非常大。

当点击比较靠后的页码时,就会出现这个问题,查询效率非常慢。

优化SQL:

select * from operation_log limit 3000000 , 10;

将上述SQL优化为 :

select * from operation_log t , (select id from operation_log order by id limit 3000000,10) b where t.id = b.id ;
<select id="selectListByCondition" parameterType="map" resultType="operationLog">selectid ,operate_class as operateClass ,operate_method as operateMethod,return_class as returnClass,operate_user as operateUser,operate_time as operateTime,param_and_value as paramAndValue,cost_time as costTime,return_value as returnValuefrom operation_log t,(select id from operation_log <where><include refid="oplog_where"/></where>order by id limit #{start},#{rows}) b  where t.id = b.id
</select>

MySQL高级 - 案例 - 系统性能优化 - 分页优化相关推荐

  1. MySQL高级 - 案例 - 系统性能优化分析

    系统中用户访问日志的数据量,随着时间的推移,这张表的数据量会越来越大,因此我们需要根据业务需求,来对日志查询模块的性能进行优化. 1) 分页查询优化 由于在进行日志查询时,是进行分页查询,那也就意味着 ...

  2. MySQL高级 - 案例 - 系统性能优化 - 读写分离概述

    性能优化 - 排序 在查询数据时,如果业务需求中需要我们对结果内容进行了排序处理 , 这个时候,我们还需要对排序的字段建立适当的索引, 来提高排序的效率 . 概述 在Mysql主从复制的基础上,可以使 ...

  3. MySQL高级 - 案例 - 系统性能优化 - 索引优化

    性能优化 - 索引 当根据操作人进行查询时, 查询的效率很低,耗时比较长.原因就是因为在创建数据库表结构时,并没有针对于 操作人 字段建立索引. CREATE INDEX idx_user_metho ...

  4. MySQL高级 - 案例 - 系统性能优化 - 数据源配置

    实现方式 db.properties jdbc.write.driver=com.mysql.jdbc.Driver jdbc.write.url=jdbc:mysql://192.168.142.1 ...

  5. php超大树形分页,PHP+MySql千万级数据limit分页优化方案

    PHP+MySql千万级数据limit分页优化方案 1年前 阅读 2750 评论 0 喜欢 0 ### 原因 徒弟突然有个需求,就是他发现limit分页,页数越大之后,mysql的消耗越大,查询时间越 ...

  6. MySql高级:explain及索引优化

    一.mysql安装linux版本rpm安装 查看是否安装了mysl rpm -qa | grep -i mysql 一定要下载指定的64位,因为电脑是64位的否则会安装失败 https://www.j ...

  7. MySQL千万数据量深分页优化

    前言 提到MySQL的事务,我相信对MySQL有了解的同学都能聊上几句,无论是面试求职,还是日常开发,MySQL的事务都跟我们息息相关. 而事务的ACID(即原子性Atomicity.一致性Consi ...

  8. MySQL高级-索引的使用及优化

    索引的使用 1 验证索引提升查询效率 2 索引的使用 2.1 准备环境 2.2 避免索引失效 1). 全值匹配 ,对索引中所有列都指定具体值. 2). 最左前缀法则(复合索引) 3). 范围查询右边的 ...

  9. MySQL 高级知识(索引、优化)

    MySQL体系架构 连接池组件.管理服务和工具组件.SQL接口组件.查询分析器组件.优化器组件.缓冲组件.插件式存储引擎.物理文件: 1.连接层:主要完成一些类似于连接处理,授权认证及相关的方案: 2 ...

最新文章

  1. 图像+预处理+数据增强+总结
  2. 开源项目越来越商业友好,谁来负责开发者友好呢?
  3. 支持鸿蒙的手机型号多少钱,华为鸿蒙系统支持手机型号一览
  4. 知识图谱在互联网金融中的应用
  5. Python之Pyforest:Pyforest的简介、安装、使用方法之详细攻略
  6. Android布局管理器-使用TableLayout表格布局管理器实现简单的用户登录页面
  7. 获取URL中 后面的参数值
  8. springmvc工作流程_SpringMVC工作原理
  9. DDMS连接bluestacks找不到设备
  10. java biz包 怎么写,关于java dao与biz分工探讨
  11. linux设备驱动程序的编程思路,Linux设备驱动工程师之路——高级字符设备驱动程序...
  12. 河北工程大学计算机科学与技术分数线,河北工程大学计算机科学与技术专业2016年在河南理科高考录取最低分数线...
  13. 这些基础的C语言选择题,不知道你能不能拿下
  14. 经典伴读_GOF设计模式_创建型模式
  15. 80端口和443端口是什么?有什么区别?
  16. ppt滚动动画随机选题
  17. 怎么查违章?查违章哪个软件最好?交管12123处理电子眼不用再跑交警队!
  18. 【渝粤教育】电大中专电商运营实操 (4)作业 题库
  19. 人工智能产业链基本介绍,人工智能技术划为哪几部分?
  20. 【大数据处理技术】第三篇 大数据处理与分析(暂停更新)

热门文章

  1. EF增删查改加执行存储过程和sql语句,多种方法汇总
  2. 二分查找or折半查找
  3. PHP命名空间(Namespace)的使用详解
  4. Java程序员时刻铭记的Git常用命令
  5. 洛谷3613睡觉困难综合征(LCT维护链信息(前后缀)+贪心)
  6. webStorm activeCode
  7. vijos P1051 送给圣诞夜的极光
  8. 实现flex LinkBar 组件 动态切换ico图标
  9. yslow客户端性能测试
  10. Swap空间利用率不释放