对于开发人员来说,Mysql当中最重要的两部分,一个是索引,一个是事务。这两个是开发人员的必备技能。
1.索引有什么作用?
拿生活中的例子来说明一下,我们都用过新华字典,字典可以按拼音查找,也可以按笔划来查找,我们暂时把它叫做拼音索引和笔划索引。但是如果没有这两个“索引”,你可能在查找某个字的时候两三天都找不出来,有了这两个索引,你就能在短短几分钟找出来。这样你就能理解索引具体有什么作用了吧。
作用:提高查询效率。当然除了提高查询效率还可以提高排序和分组效率。
2.索引的定义?
官方定义:索引是帮助MYSQL高效获取数据的数据结构
简单理解:索引是排好序的快速查找的数据结构
3.索引的结构
Mysql索引主要有两种结构:B+Tree索引和Hash索引,B+Tree是mysql使用最频繁的一个索引数据结构,Hash索引几乎不用。
(1) Hash索引
优点:速度快。hash的理论查询时间复杂度为O(1),即1次
缺点:
- hash冲突(采用拉链算法)
- 无法进行范围查询。例如:where id > 4 and id < 100,此时索引失效(如果是btree索引,则索引不失效)
- 无法利用前缀索引。例如:前辍索引 hello,hash("hello") 与 hash("helloworld")都是随机的
- 排序也无法优化
(2)B+Tree索引
优点:速度快、支持范围查询
缺点:索引的构建过程比较复杂。
4.索引的类型
- 主键索引,也是聚簇索引
- 普通索引,也叫二级索引/次级索引
- 组合索引