一.实例
二.具体分析
1.Index Type
- Normal: 普通索引
- Unique: 唯一的,不可重复的
- Full Text: 全文搜索的,用于搜索很长的文章,效果最好
1.1 在实际操作过程中,应该选取表中哪些字段作为索引?
- 选择唯一性索引
- 为经常需要排序、分组和联合操作的字段建立索引
- 为常作为查询条件的字段建立索引
- 限制索引的数目
- 尽量使用数据量少的索引
- 尽量使用前缀来索引
- 删除不再使用或者很少使用的索引
2.Index method
- BTREE: 需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,二叉树相同的道理,相当于建个排序后的数据集,使用二分法查找算法
- HASH: 检索效率非常高,hash索引中存放的都是经过hash计算之后的值,而hash值的大小关系不一定与hash计算之前的值一样
2.1 为什么实际中普遍使用BTREE而不是HASH?
- HASH索引仅仅能满足 =, <=> 比较查询,不能进行范围查询(in, between …… and ……)。
- hash索引无法被用来进行数据的排序操作
- 对于组合索引,Hash 索引在计算 Hash 值的时候是组合索引键合并后再一起计算 Hash 值,而不是单独计算 Hash 值,所以通过组合索引的前面一个或几个索引键进行查询的时候,Hash 索引也无法被利用。BTREE索引在组合索引中的提现是按照最左侧原则。例如索引是key index (a,b,c)。 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找。
- Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高。