mysql索引优化要点
可以使用B-tree索引的查询类型:
- 全值匹配:和索引中的所有列进行匹配
- 匹配最左前缀:即使用索引的第一列
- 匹配列前缀:即匹配索引的第一列值的部分
- 匹配范围值:匹配索引值的范围
- 精确匹配某一列并范围匹配另外一列
- 只访问索引的查询
B-Tree索引限制:
- 如果不是按照索引的最最左列开始查找则无法使用索引。
- 不能跳过索引中的列,即不能直接使用索引中中间的列,只能使用索引第一列
- 如果查询中有某个列表的范围查询,则其右边所有的列都无法使用索引优化查找,如
like
,!=
等。如果查询值的范围有限制,那么可以通过使用多个等于条件来代替范围条件。
哈希索引说明:
- 存储引擎会对数据列计算一个hash值
- 哈希索引只支持等值比较查询。
- 哈希索引的速度非常快,除非有很多哈希冲突。
- 哈希索引不是按照索引值顺序存储的,所以不能用于排序
- 哈希索引不支持部分索引列匹配查找