一、为什么用 B+ 树做索引而不用哈希表做索引?
√
\color{#FF7D00}{√}
√ 哈希表是把索引字段映射成对应的哈希码然后再存放在对应的位置,这样的话,如果我们要进行模糊查找的话,显然哈希表这种结构是不支持的,只能遍历这个表。而B+树则可以通过最左前缀原则快速找到对应的数据。
√ \color{#FF7D00}{√} √ 如果我们要进行范围查找,例如查找ID为100 ~ 400的人,哈希表同样不支持,只能遍历全表。
√ \color{#FF7D00}{√} √ Hash冲突,会导致出现很长的链表,导致查找时间增加。
二、主键索引(聚簇索引)与非主键索引(二级索引)
√
\color{#FF7D00}{√}
√
主
键
索
引
\color{#01B468}{主键索引}
主键索引 的索引列唯一且不能为空;一张表只能有一个主键索引。
√ \color{#FF7D00}{√} √ 主 键 索 引 \color{#01B468}{主键索引} 主键索引 的 b-tree 的叶子节点存放的是 整 行 数 据 \color{#01B468}{整行数据} 整行数据,
非 主 键 索 引 \color{#005AB5}{非主键索引} 非主键索引 的叶子节点存放的是 主 键 的 值 \color{#005AB5}{主键的值} 主键的值 ,
所以,在查询的时候,使用 主 键 索 引 \color{#01B468}{主键索引} 主键索引 的效率要比使用 非 主 键 索 引 \color{#005AB5}{非主键索引} 非主键索引 的效率高(因为 非 主 键 索 引 \color{#005AB5}{非主键索引} 非主键索引 会进行 回 表 \color{#005AB5}{回表} 回表 )。
√ \color{#FF7D00}{√} √ 为什么建议使用 主 键 自 增 \color{#01B468}{主键自增} 主键自增 的索引?
因为 B+ 树是有序的,所以自增插入时,直接插入到 最 右 侧 \color{#01B468}{最右侧} 最右侧 即可;中间数插入时,B+ 树需要变形,也可能
会出现
分
页
\color{#01B468}{分页}
分页 时的变形。
三、非主键索引(二级索引)
√
\color{#FF7D00}{√}
√
唯
一
索
引
\color{#9F4D95}{唯一索引}
唯一索引 :索引列的值必须是唯一的,但允许有空。
√ \color{#FF7D00}{√} √ 全 文 索 引 \color{#9F4D95}{全文索引} 全文索引 :用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。
√ \color{#FF7D00}{√} √ 普 通 索 引 \color{#9F4D95}{普通索引} 普通索引 :就是普通索引…