深入理解数据库索引

什么是索引

1. 索引是指针,指向表里的数据。
2. 索引通常与相应的表示分开存储的,其主要目的是提高数据检索的性能。
3. 索引的创建于删除不会影响到数据本身,但会影响到数据检索的速度。
4. 索引也会占用表空间,而且可能会比表本身大

聚集索引(clustered index,也称聚类索引、簇集索引)

聚集索引是指数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同。
一个表只能有一个聚集索引,因为一个表的物理顺序只有一种情况,所以,对应的聚集索引只能有一个。

=============================================================================================================================================================================================================================================================================================================================================================

举例:

  1. 定义数据库时定义一个自增id字段(物理存储也按照这个id自增)
  2. 字典存储中,按照拼音排序,字典的正文部分本身就是一个目录,您不需要再去查其他目录来找到您需要找的内容。

非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)

该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同。
数据行不按非聚集索引键的顺序排序和存储。

如何使用 聚集索引与非聚集索引

动作描述使用聚集索引使用非聚集索引列经常被分组排序应应返回某范围内的数据应不应一个或极少不同值不应不应小数目的不同值应不应大数目的不同值不应应频繁更新的列不应应外键列应应主键列应应频繁修改索引列不应应


索引如何工作

深入理解数据库索引教程

索引分类

单字段索引

基于一个字段创建的索引
CREATE INDEX INDEX_NAME
ON TABLE_NAME(COLUMN_NAME)

唯一索引

唯一索引不允许表里有重复值,除此之外与普通索引相同。
CREATE UNIQUE INDEX INDEX_NAME
ON TABLE_NAME(COLUMN_NAME)

注: 允许NULL值得字段上不能创建唯一索引

组合索引

 基于表里的两个或多个字段建立的索引。
 在创建组合索引时,需要考虑性能的问题,因为字段在索引里的顺序对数据检索的速度有很大影响。
 CREATE INDEX INDEX_NAME
ON TABLE_NAME(COLUMN1,COLUMN2)

隐含索引

隐含索引是数据库服务程序在创建对象时,自动创建的。
数据会为主键约束和唯一性约束自动创建索引。(主键和唯一性约束在插入数据时都需要检查唯一性,建立索引可以使唯一性检查效率更高)

标签: 数据库, NAME, 深入, 索引, INDEX, 顺序, 聚集

相关文章推荐

添加新评论,含*的栏目为必填