聚簇索引(CLUSTERED)和唯一索引(UNIQUE)(完善中。。。)
什么是索引?
定义
数据库只做两件事情:存储数据、检索数据。而索引是在你存储的数据之外,额外保存一些路标(一般是B+树),以减少检索数据的时间。所以索引是主数据衍生的附加结构。
一张表可以建立任意多个索引,每个索引可以是任意多个字段的组合。索引可能会提高查询速度(如果查询时使用了索引),但一定会减慢写入速度,因为每次写入时都需要更新索引,所以索引只应该加在经常需要搜索的列上,不要加在写多读少的列上。
分类
单列索引 与 复合索引
只包含一个字段的索引叫做单列索引,包含两个或以上字段的索引叫做复合索引(或组合索引)。建立复合索引时,字段的顺序极其重要。
聚集索引 与 非聚集索引
聚集索引的作用对象是一张表数据的物理地址,聚集索引使得数据按照物理地址顺序的存储在存储介质中,数据的物理地址也是连续的,因此聚集索引是查询速度最快的索引,其查询原理是二分法。
非聚集索引定义的原则往往是基于业务逻辑。非聚集索引在物理地址上不相邻,更像是一个数据字典索引。
唯一索引 与 主键
唯一索引是在表上一个或者多个字段组合建立的索引,这个(或这几个)字段的值组合起来在表中不可以重复。一张表可以建立任意多个唯一索引,但一般只建立一个。
主键是一种特殊的唯一索引,区别在于,唯一索引列允许null值,而主键列不允许为null值。一张表最多建立一个主键,也可以不建立主键。