数据库优化索引

为什么要使用索引?

索引可以避免全表扫描去查找索引,提升检索效率。

什么样的信息能成为索引?

主键,唯一键等能区分数据唯一性的字段都能成为索引。

索引的数据结构?

主流是B+树,还有Hash,Bitmap。其中MySQL数据库不支持Bitmap索引。

密集索引和哈希索引的区别?

密集索引稀疏索引 

索引的优化

1、二叉查找树

 时间复杂度O(logn)

2、B-Tree

定义:

根节点至少包括两个孩子

树种每个节点最多含有m个孩子(m>=2)

除根节点和叶子节点,其它每个节点至少有ceil(m/2) 个孩子

所有叶子节点都位于同一层 

3、B+-Tree

B+树是B树的变体,其定义基本与B树相同,除了

非叶子节点的子树指针与关键字个数相同。

非叶子节点的子树指针P[i], 指向关键字(K[i],k[i+1])的字树

非叶子节点仅用来索引,数据都保存在叶子节点中

所有叶子节点均有一个链指针指向下一个叶子节点

结论:

B+树更适合用来做索引

B+树对磁盘读写代价更低

B+数的查找效率更加稳定

B+数更有利于对数据库的扫描

 4、Hash索引

 缺点:

仅能满足“=”,“IN”,不能使用范围查询

无法被用来避免数据的排序操作

不用利用部分索引键查询

不能避免表扫描

遇到大量Hash值相等的情况后性能不一定就会比B-Tree索引高。

5、BitMap索引(位图索引)(使用较少)

原文地址:https://www.cnblogs.com/linlf03/p/12184819.html