索引是一种数据,能够提高我们对数据库查询的效率;
优点:查询效率高,
缺点:它也是一种数据,占内存;创建索引需要花费时间;在插入删除数据时,同样需要修改索引,效率低。
什么时候适合建索引?
1.在有大量数据的时候;
2.建索引的列不存在大量的重复数据
3.索引的列不能频繁的修改;
4.不存在大量的空值
5.列经常用来查询和排序
索引分类:
按照使用效果分:
主键索引;只能有一个,不能重复,不能为空,
唯一索引:只能有一个,不能重复
全文索引:用于全文本的查询
组合索引:在多个列建索引
普通索引:没有约束
按照结构分:
聚簇索引:索引的顺序和数据的顺序一致,一个表只能有一个;
非聚簇索引:索引的顺序和数据的顺序不一致,一个表可以有多个;
很多情况也会让索引失去作用:
1.使用or关键字
2.模糊查询时,把%写在了前面
3.建列时放在了函数或者表达式中
4.使用组合索引时,没有包含最左边的一列
索引的数据结构?
B树和B+树
B树分为多个节点,每个节点由键和数据组成,每个节点两边还有指针,分别指向下面的节点,查询的效率由树的高度决定;
B+树大致和B树一致,不同的是,B+树它的数据放在了子节点中,从而减小了节点的大小,让每一层能放更多的节点,进而降低了树的高度,提升了查询的效率;