在mysql中,索引在存储引擎层而不是服务器层实现的。
如果没有特别指明类型,那多半说的是B-Tree索引
索引的类型
- B-Tree索引
- 哈希索引
- 空间数据索引(R-Tree)
- 全文索引
- 聚簇索引
- 覆盖索引
- 压缩(前缀压缩)索引
- 冗余和重复索引
B-Tree索引
- B-Tree 对索引列是
顺序
组织存储的,所以很适合查找范围数据 - 每一个叶子页到根的
距离相同
- 树的深度和表的大小直接相关
- B-Tree 索引能加快访问数据的速度
- 最终存储引擎要么是找到对应的值,要么该记录不存在
可以使用B-Tree 索引的查询类型
- 全键值
- 键值范围
- 键前缀(只适用于根据最左前缀的查找)
哈希索引
- 哈希索引基于哈希表实现,只有精确匹配索引所有列的查询才有效
- 哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针
- 在mysql中,只有Memory引擎显示支持哈希索引
处理哈希冲突