在索引结构篇我们知道了聚集索引和非聚集索引的区别,在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.有时候正确使用联合索引,或者辅助索引中的主键,可以避免回表
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。