这里记录一些看了《高性能mysql》后的一些学习心得
在弄清楚mysql innoDB前要提前了解索引的原理,最基本的要了解磁盘结构与工作方式还有b-tree结构。
加索引的目的:
- 减少服务器执行sql时扫描的数据量
- 避免order by或者group by等操作的时候产生的临时表
- 将随机IO变成顺序IO
评价索引好坏的标准:
- 一星,索引将相关的数据放在一起
- 二星,索引中列的顺序与查询中的列的顺序是一样的
- 三星,索引中的列包含查询中的所有列
设计索引注意事项:
- 多个字段的联合索引要与查询的顺序一致,那么这里就涉及一个问题,在设计查询的时候应该把哪一列做为第一个被查询的字段呢?
e.g.使用如下原则:

这样做的原因:第1级如果使用聚合少的键,那么就更容易让第2级更聚合,即需要去查询b-tree的次数变少。
mysql索引优化
标签: