什么是索引?
索引是用于实现数据的快速检索,有数据表中一列或者多列组成,索引其实是一张描述索引目标列的与表中记录的数据一一对应的有序表。
通俗讲:索引就是数据的目录,所以索引是一个文件,需要物理空间来存储。
索引的优缺点?
优点
· 提高数据检索速度,降低数据库IO
· 通过索引列对数据进行排序可以减低排序成本
缺点
· 创建索引及维护索引需要耗费时间,且随着数据量的增加而增加
· 索引需要物理磁盘空间
· 对表中数据进行删除、新增及修改时,索引也需要做动态维护,增加相关操作时间
什么是聚簇索引和非聚簇索引?
根据索引的存储方式来划分,索引可以分为聚簇索引和非聚簇索引。
聚簇索引的特点是叶子节点包含了完整的记录行,而非聚簇索引的叶子节点只有索引字段和主键ID。
聚簇索引
聚簇索引也叫聚集索引或主键索引,它实际上并不是一种单独的索引类型,而是一种数据存储方式,聚簇索引的叶子节点保存了一行记录的所有列信息。也就是说聚簇索引的叶子节点中包含了一个完整的记录行
特点
一个表只能创建一个聚集索引;
聚集索引尽量建在不会经常发生变动的列上,因为一旦列变动同时也会引索引结构变化,而索引结构中也包含者数据的变动;
数据库在创建主键时如果这个表之前没有聚集索引,同时建立主键时候没有强制指定使用非聚集索引,则建立主键时候,同时建立一个唯一的聚集索引
非聚簇索引
非聚簇索引也叫辅助索引或普通索引或二级索引,它的叶子节点只包含主键值和索引字段,通过非聚簇索引查找记录要先找到主键,然后通过主键再到聚簇索引中找到对应的记录行,这个过程被称为回表