SQL Server 索引

发布时间 2023-03-22 21:16:39作者: 以德为先

索引的简介:
索引分为聚集索引和非聚集索引,数据库中的索引类似于一本书的目录,在一本书中通过目录可以快速找到你想要的信息,而不需要读完全书。

索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间 。

但是索引对于提高查询性能也不是万能的,也不是建立越多的索引就越好。索引建少了,用 WHERE 子句找数据效率低,不利于查找数据。索引建多了,不利于新增、修改和删除等操作,因为做这些操作时,SQL SERVER 除了要更新数据表本身,还要连带立即更新所有的相关索引,而且过多的索引也会浪费硬盘空间。

索引的分类:
索引就类似于中文字典前面的目录,按照拼音或部首都可以很快的定位到所要查找的字。

唯一索引(UNIQUE)每一行的索引值都是唯一的(创建了唯一约束,系统将自动创建唯一索引)

主键索引当创建表时指定的主键列,会自动创建主键索引,并且拥有唯一的特性。

聚集索引(CLUSTERED)聚集索引就相当于使用字典的拼音查找,因为聚集索引存储记录是物理上连续存在的,即拼音 a 过了后面肯定是 b 一样。数据行的物理顺序与列值的逻辑顺序相同,一个表只能拥有一个聚集索引。

非聚集索引(NONCLUSTERED):非聚集索引就相当于使用字典的部首查找,非聚集索引是逻辑上的连续,物理存储并不连续。该索引中索引的逻辑顺序与磁盘上数据行的物理存储顺序不同,一个表中可以拥有多个非聚集索引。其实按照定义,除了聚集索引以外的索引都是非聚集索引,只是人们想细分一下非聚集索引,分成普通索引,唯一索引,全文索引。

PS:聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。

什么情况下使用索引: