mysql 索引

1.在优化性能的时候,可能需要使用相同的列但顺序不同的索引来满足不同类型的查询需求;

2.如果索引包含多个列 mysql只能高效的使用最左前缀列,创建一个包含两个列的索引 和创建一个包含两个只包含一个列的索引是大不相同的;

3.当出现服务器对多个索引做相交操作时(通常有多个AND条件),通常意味着需要一个包含所有相关列的多列索引,而不是多个独立的单列索引;

4.使用in(),的时候尽可能将需要做范围查询的列放到索引的后面,以便优化器能使用尽可能多的索引列;

5.尽可能少的使用in(),因为每额外增加一个in(),优化器需要做的组合都将以指数形式增加;

6.多列索引的列顺序至关重要:

  当不需要考虑排序和分组的时候,将选择性最高的列放在前面通常是很好的,此时索引的作用只是用于优化where条件的查找;

  对应条件值的数量越小,越适合放前面一些;

7.B-Tree索引限制:

  如果不是按照索引的最左列开始查找,则无法使用索引;

  该索引类型适用于全键值,键值范围,前缀查找;

索引分多种:

    如 B-Tree,哈希索引,前缀索引;

参考高性能MYSQL第三版中文 总结;感谢本书作者;

原文地址:https://www.cnblogs.com/beixiaoyi/p/9982990.html