1、索引的概念
索引是排好序的数据结构,用于提高查询速度
2、索引的类型
① 聚簇索引:索引顺序和数据存储顺序一致,类似于字典拼音目录
② 非聚簇索引:索引的顺序与数据存储顺序不一致,类似于字典偏旁部首目录
3、索引的数据结构
① B树:平衡搜索二叉树,节点由key(排好序)和data组成,可以通过指针使用二分查找达到h*log(n)的查询效率
② B+树:是B树的升级版,区别在于B+树的非叶子节点(最底层的节点)不存放数据,每一层可以存放更多的key,减小树高,减少了IO(IO消耗远大于数据读取),优化了查询速度
4、索引的优缺点
优点:提高查询速度
缺点:①、索引本身也是文件,会额外的占用存储空间
②、在增删改的时候要维护索引,会有额外的开销
5、索引的最左前缀
不遵循最左前缀会导致索引失效,所以要按查询和排序的重要程度依次从左决定索引字段
6、适合/不适合建索引的场景
适合:① 数据量大 ② 经常查询和排序
不适合:① 数据量小 ② 频繁增删改的字段 ③ 字段存在大量重复内容,如性别、年龄等
7、索引失效场景
① 模糊查询like以%开头
② 使用is null 或者 is not null
③ 使用OR(IN同OR),使用union all代替
or两边字段不同,union all>or 。or两边字段相同,union all<or
④ 在函数中使用索引字段
⑤ 组合索引某个字段为null