文章目录
索引是什么?
索引是一种键值对型的数据结构,为了快速定位记录。
很多时候说的索引都是指的键。--------为了避免混淆,我下文称之为狭义索引或者狭义索引键或者狭义索引列
很多时候说的索引指的键值对整体。--------为了避免混淆,我下文称之为广义索引或者广义索引键值对
注意在具体语境中体会。
索引的分类
Case1:按数据结构分类
B+树&哈希&R-树&full-text
既然索引是一种数据结构,按照它数据结构的实现自然而然地可以分为
(1)B+树索引:基于B+树实现。(!!!使用频率最高)
目录页;
数据页;
(2)哈希索引:基于哈希表实现。
k:哈希值(注意不是哈希码)
v:指针、引用
Q:B+树索引和哈希索引的区别是啥?
(3)R-Tree索引:基于R树实现。
(4)full-text全文索引
注意:上面说的索引默认指的是广义索引或者广义索引键值对
Case2:按键分类(或者说按列分类)
主键索引&唯一索引(它们只是属于关系而已)
索引存的是啥?一个个键值对。
比如学生信息表,一般每个表都会有一个自增的主键列,从1开始随着记录的增加不断增长。
每个学生都拥有独一无二的学号和身份证,电话号码。
我们可以只是根据id来定位一条记录,也可以根据学号,身份证,电话号码来定位一条记录。
前者叫主键索引,后者叫唯