Mysql-索引类型篇

Posted 发条橙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql-索引类型篇相关的知识,希望对你有一定的参考价值。

在索引结构篇我们知道了聚集索引和非聚集索引的区别,在mysql中,还有一些其他类型索引的概念

联合索引(多列索引):使用多列字段组合创建索引,联合索引查询比设置多个单列索引效率高

联合索引如何查询:按顺序先比较第一个联合的字段大小,相同就继续比较下一个
最左前缀原则:涉及到联合索引的查询时,最左优先,从联合索引的最左边开始匹配,否则,因为其他字段的非有序性,需要去扫描全表(覆盖索引下扫描的是索引树),无法进行联合索引的使用。需要考虑的是,如果仅仅是where后字段and顺序的不同,是不会影响联合索引的使用的,因为mysql优化器会优化(另外,联合索引中的字段,使用范围查询会使右边字段在索引中失效。例如select * from table where a=1 and b>2 and c=3,a b c建立联合索引,当联合索引确定a的值后,因为b和c都是相对有序,而b是范围查找,所以c无法确定顺序,导致c失效,联合索引只查询到a b)

前缀索引:当对长类型的字段添加索引的时候,要使用前缀索引对字段指定长度的部分创建索引,否则会造成索引存储空间过大

覆盖索引:对字段进行覆盖索引操作,如果索引存储的数据满足查询语句需要的结果,则不需要再去进行系统调用,直接返回索引中的数据

唯一索引(Unique):索引字段要求唯一性,不允许重复数据

普通索引(Normal):基本索引类型,非主键

全文索引(Full Text):一般对长文本创建的索引

空间索引(SPATIAL):对空间类型数据创建的索引

tips:
1.索引不能放在表达式或者函数中,否则会失效

2.有时候正确使用联合索引,或者辅助索引中的主键,可以避免回表

以上是关于Mysql-索引类型篇的主要内容,如果未能解决你的问题,请参考以下文章

Mysql-优化篇

MySQL 索引--MySQL命令篇

mysql优化篇(基于索引)

面试之mysql数据库篇

阅读阿里文档总结————Mysql数据库篇

MySQL高级篇——索引失效案例