mysql中索引的数据结构:
1、基本上所有的索引都是B-Tree结构,一部分还有HASH索引。
2、索引分类(功能)
主键索引:一张表中最多有一个主键索引,而且该字段值不能为NULL,不能重复。
唯一索引:一张表中可以有多个唯一索引,而且字段可以为NULL,但是不能有重复值。
普通索引:一张表中可以有多个普通索引,而且值可以为NULL,并且值可以重复。
全文索引:全文索引就是将该字段的信息加以拆分和组合,形成一份清单,和sphinx全文索引一样。
复合索引:一个索引如果建立在多个字段上,那该索引就称为复合索引。
说明:其实这些索引所用的数据结构都是一样的B-Tree结构。只是他们对字段信息的约束条件不一样。
3、B-Tree数据结构简单说明
1)B-Tree结构首先是分成很多节点,一个节点上面有很多的关键字(建立索引的字段),这些关键字在节点上是按照顺序排列的。
2)在一个节点上,每一个关键字的前面都有一个下个节点指针。所以在一个节点上面,关键字的数量总是比节点指针的数量少一个。
3)每个节点指针指向下一个节点。
4、索引使用:左原则
通过对B-Tree的结构做简单的分析,可以得出,使用想使用索引应该满足左原则。如:
1)like查询的时候,不能以通配符开始
2)复合索引,如果想使用第二个关键字索引,那第一个关键字必须要确定。
列独立:只有参与表达式的字段在运算符的一边才能使用到索引。where id>3;where id+3>6;(这个使用不到索引)
null不会被建立索引。但是有其他的方法能记录null字段的信息。