一、什么是索引?
二、索引的数据结构?
三、索引的种类?
四、索引的优缺点?
1、什么是索引?
到底什么索引?大家说数据库时,总是绕不开索引这个概念,大家也都一直在使用索引,那么索引到底是什么?可以跟操作系统来联系一起讲深刻讲一讲索引。
索引就是一种特殊的查询表,类似一本书的目录。在操作系统中,文件的存放结构是树状存放,其中叶子节点为文件,非叶子节点为路径。通常说的绝对路径就是从根节点访问到该文件的路线。创建文件时由两部分组成,系统会给创建的文件分配存储空间,此外,系统还会给文件分配一个i节点,里面存放的是文件名字和文件地址,所以在创建文件时,实际上为该文件+i节点。i节点就是该文件的索引。这就是为什么在创建文件时,同一个文件夹内的名字必须要唯一,因为名字就是主键。
如下图所示,树状结构存放的是索引i节点,索引对应的是文件,这就为什么使用索引会增加时间开销和空间开销。因为在增加文件时,除保存文件外,还要对索引树进行维护。
引用一下别人的说明,假如我们执行一个SQL语句:select * from table where id = 1256;首先根据索引定位到1256这个值所在的叶结点,然后再通过叶结点取到id等于1256的数据行。 这里不讲解平衡树的运行细节, 但是从上图能看出,树一共有三层, 从根节点至叶节点只需要经过三次查找就能得到结果。如下图
二、索引的数据结构
索引一般使用平衡树数据结构,也就是b tree或者 b+ tree,重要的事情说三遍:“平衡树,平衡树,平衡树”。此外, 有的数据库也使用哈希桶作用索引的数据结构。
三、索引的种类
(1)普通索引:这是最基本的索引,它没有任何限制。
(2)唯一索引:它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
(3)主键索引:它是一种特殊的唯一索引,不允许有空值。
(4)组合索引:可以有多列。
(5)全文索引
四、索引的优缺点
优点:
1、增加数据的检索速度
2、不需要遍历全部数据
缺点:
1、减慢了数据录入的速度
2、增加了存储开销