1 索引类型
-
B-Tree索引
-
如果不是按照索引的最左列开始查找,则无法使用索引
-
哈希索引
哈希索引基于哈希表实现,只有精确匹配索引所有列才有效。哈希表保存指向每个数据行的指针。 -
空间数据索引
-
全文索引
2 索引的优点
- 大大减少了服务器需要扫描的数据量
- 避免排序和临时表
- 将随机IO变为顺序IO
3 索引策略
- 独立的列:查询的索引列不能是表达式的一部分,也不能是函数的参数
where id + 3 = 5 - 前缀索引
- 聚簇索引 聚簇表示数据行和相邻的键值放在一起
- 提高了IO密集型应用的性能
- 二级索引需要两次索引查找(二级索引保存的事主键值,而不是指向数据的指针)
- InnoDB尽可能按主键顺序插入数据,并且尽可能使用单调增加主键值来插入新行
- 覆盖索引,如果一个索引包含所有需要查询的字段(无需回表),就称之为覆盖索引
- 使用索引扫描来做排序 只有当索引的列顺序和ORDER BY子句的顺序完全一致
- MySQL的唯一限制和主键限制都是通过索引实现的。
- 冗余索引:因为Innodb二级索引包含的主键的值,所以 (A)索引相当于(A,id),如果构建(A,id)索引,将是冗余的。
- 通过工具可以找出无用索引。
4 查询性能优化
衡量查询开销指标:
- 响应时间
- 扫描的行数
- 返回的行数
参考文献
高性能MySQL

636

被折叠的 条评论
为什么被折叠?



