数据库管理系统中一个排序的数据结构,以协助快速查询,更新数据库中表的数据。
实现:B树和变种的B+树。
作用:提高查询效率。提高程序性能
3.1、应创建索引的场景
- 经常需要搜索的列上
- 作为主键的列上
- 经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度
- 经常需要根据范围进行搜索的列上
- 经常需要排序的列上
- 经常使用在where子句上面的列上
- 3.2、不应该创建索引的场景
- 查询中很少用到的列
- 对于那些具有很少数据值的列,比如数据表中的性别列,bit数据类型的列
- 对于那些定义为text,image的列,因为这些列的数据量相当大
- 当对修改性能的要求远远大于搜索性能时,因为当增加索引时,会提高搜索性能,但是会降低修改性能
-
抛开其他的数据库索引实现,主讲MySQL的索引底层实现,其底层是通过B+树来实现的数据结构存储。
数据结构存储,决定了数据查找和操作时的效率,包括时间复杂度和空间复杂度,而在取舍的时候,也无非就是时间换空间,空间换时间的权衡罢了,所以,这就很好的解释了,为什么MySQL在索引的底层设计上,选用了B+树,而没有选用B-树,或是红黑树,AVL树等等其他数据结构。总之,就是使用B+树作为索引的结构存储,能在I/O性能上得到一个较大的优势。 -
关于索引的使用 是学习十索引的重中之重,详情可以参考下面这篇文章,介绍了索引在mysql中的使用以及索引失效的几种情况。