索引
1.索引是什么?
索引是一种特殊的文件,包含着包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。
2.索引要解决的问题
用于加快查找的效率,类似于书的目录。为了避免数据库进行顺序查找,提高查找效率。
3.索引的应用场景
插入、删除、修改操作较少且条件查询操作较多且有足够的磁盘空间的时候。
因为索引起到的效果是加快查询效率,减缓插入、删除、修改操作效率。由于索引需要同步调整索引结果,所以每插入、删除、修改一次都会对原有的表进行一次调整,从而是效率减缓。
4.索引的数据结构
a)为什么不用哈希
哈希的查找过程是把key带入哈希函数,计算得到下标,再根据下表取到对应的链表,再去遍历比较key是否相等.虽然哈希表的查找效率是O(1),但是哈希只能处理值相等的情况,不能处理其他逻辑。所以不使用哈希。
b) 为什么不用二叉搜索树
二叉搜索树如果比较平衡,查找效率就是O(logN),如果不平衡则大于O(logN)。
二叉搜索树内的元素通过中序遍历遍历出的结果是有序的。不用二叉搜索树的原因是因为使用二叉搜索树存储数据的话二叉搜索树的深度太深,效率太慢。所以不使用二叉搜索树
c)什么是B-树,B-树有什么优势
B-树是一种N叉树,每个节点可能存储多个数据,B-树的度为每层的数据个数+1。
d)什么是B+树,B+树有什么优势
B+树相比于B-树,每一层的元素之间都以链表的形式连接到一起。数据值在叶子节点上保存,非叶子节点上只保存一些辅助查找的边界信息。相较于B-树查找效率更快。
5.索引的使用
查看索引
show index from 表名;
创建索引
create index 索引名 on 表名(字段名);
删除索引
drop index 索引名 on 表名;