当表很大的时候可以设计冗余字段,避免与大表连表查询造成性能低下

比如日志表和用户表,日志表通常到后期会相当的大可以做一个username的冗余字段,避免查看username的时候去和user表关联

当分页过大时的优化策略

下图的例子是直接使用where去检索一个非索引列,结果是采用全文检索的方式

通过加上order by 索引列把上图查询的type优化成index

使用BTree索引优化查询 发现type变成了ref

BTree索引

下图的查询classType有normal索引,索引方式为btree这个时候type是ref速度已经很快了

当查询身份证但是身份证有x所以不能用纯数字,只能用vachar,这时候可以加上唯一索引, 索引方式用btree,这样查询的type会变成const速度相当的块

如下图user_sys2的唯一索引是username,并且索引方式是Btree,所以这个时候type就变成了const

count(*)在MyIsam中非常快,因为MyIsam引擎已经保存了行数,但是Innodb需要自己计算

count(*)统计所有记录行

count(column)统计不为NULL的数据的条目

当order by 需要两个列去排序的时候要创建联合索引,下图hire_date和ids都分别有各自的索引,但是查询的时候会使用All,开销都花在创建排序索引上面,看下面2图,可以发现creating sort index消耗占比%99.841

这个时候如果我们把hire_date,ids加上联合索引,查询速度就会大大的提升,下图此时type已经变成range

联合索引不可以随便创建,只有经常需要联合查询的数据列才需要加联合索引,因为加索引会影响插入和修改速度,因为inndb的索引下叶子节点都是直接存放有数据的,因此查询块,不用到磁盘扫描,但是插入的时候就包含创建索引和数据拷贝,所以会导致插入和修改速度慢

limit优化

where条件查询username上有索引但是如果不加limit使用的是all

加上了limit之后就会变成range

limit优化用错排序字段遇到的坑,因为是联表,因为用到的是b表的查询条件,但是排序用的是a表的,所以虽然type是range但是extra有using temporary,using filesort此时我们是需要优化的

排序和查询都用一张表的索引字段,这样虽然type变成了index 但是extra只有一个where 速度就快了好多

分组查询倒排序速度很慢,因为排序过程中的s并不是索引字段,而是max(salary)

使用下面的方式已经优化了一些但是依然不够,可以用第三方来完成我们的sql优化,可以吧分组查询结果单独建立一张表,当有数据产生时需要去修改这张表

最新文章

  1. 与大家分享robotium一个小问题。Test run failed:Instrumentation run failed due to 'java.lang.ClassNotFoundException'
  2. HTML基础篇之HTML基本元素
  3. Apache Lucene 4.5 发布,Java 搜索引擎
  4. java二维数组的常见初始化
  5. WPF中模板选择和DataContext的一些使用
  6. Hibernate 中update hql语句
  7. 纯css3鼠标经过图片显示描述特效
  8. CentOS5.6 安装RabbitMQ
  9. C#解leetcode 219. Contains Duplicate II
  10. Qt5:Qt中一些函数功能介绍
  11. v3学院带你学习EEPROM读写实验
  12. Laravel 5.2 教程 - 数据填充
  13. MySQL注释中的sql也可能执行
  14. Linux下用rm删除的文件的恢复方法
  15. linux统计文件夹大小
  16. socket 映射服务器--(可处理多客户端连接(fork),显示退出信息)
  17. unity hide/show text
  18. 817C. Really Big Numbers 二分
  19. Linux下Oracle 10g DataGuard配置(主从同步及切换)
  20. Redis 列表 List 主要操作函数

热门文章

  1. Delphi 开发微信公众平台 (二)- 用户管理
  2. centos下 yum快速安装maven
  3. 一张图看懂SharpBarcode
  4. https相关知识总结
  5. 调用日志输出错误:TypeError: 'int' object is not callable等
  6. Linux中的defunct进程(僵尸进程)
  7. scarpy设置日志打印级别和存储位置
  8. Macaca app inspector-ios真机设备UI查看器
  9. vue使用html2canvas生成图片并保存到本地
  10. Vue – 基础学习(1):对生命周期和钩子函的理解