SQL Server:索引


1.索引概念

索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。 索引包含由表或视图中的一列或多列生成的键。 这些键存储在一个结构(B 树)中,使 SQL Server 可以快速高效地找到与键值关联的行。

2.索引种类

2.1聚集索引

聚集索引,你逻辑上怎么创建的,在物理存储中就是怎么创建的。

每个表只能有一个聚集索引

一般情况下,定义聚集索引键时使用的列越少越好。

适用情况:

  • 唯一或包含许多不重复的值。

  • 按顺序被访问。

  • 定义为 IDENTITY。

  • 经常用于对表中检索到的数据进行排序。

不适用情况:

  • 频繁更改的列

这将导致整行移动,因为数据库引擎必须按物理顺序保留行中的数据值。 这一点要特别注意,因为在大容量事务处理系统中数据通常是可变的。

  • 宽键

宽键是若干列或若干大型列的组合。 所有非聚集索引将聚集索引中的键值用作查找键。 为同一表定义的任何非聚集索引都将增大许多,这是因为非聚集索引项包含聚集键,同时也包含为此非聚集索引定义的键列。

2.2非聚集索引

可以对表或索引视图创建多个非聚集索引

索引理解为一种特殊的目录,目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。

适用于:

  • 某列常用于集合函数(如Sum,…)。
  • 覆盖查询。
  • 大量非重复值,如姓氏和名字的组合(前提是聚集索引被用于其他列)。
  • 查寻出的数据不超过表中数据量的20%。
2.3唯一索引

此索引保证索引中不包含重复的值,从而使表中每一行在某种意义上也是具有唯一性的

只有当唯一性是数据本身的特征时,指定唯一索引才有意义。

聚集索引和非聚集索引都可以是唯一的。 只要列中的数据是唯一的,就可以为同一个表创建一个唯一聚集索引和多个唯一非聚集索引。

优点:

  • 能够确保定义的列的数据完整性。
  • 提供了对查询优化器有用的附加信息。
2.4主键索引

主键索引是唯一索引的特殊类型。主键是索引,但索引不一定是主键

以主键基础建立的一个索引,为表定义一个主键时就自动为表创建了主键索引


3.建立索引

类似于表的创建,索引英文是index,所以

create [unique] [clustered|nonclustered] index 索引名字 on 表名 / 视图名 ( 索引字段 [desc|asc] …)

unique :表示索引内每个索引值对应唯一的数据

clustered :表示索引是聚集索引

nonclustered :即表示索引不是聚集索引

  • 以上都是可选项
  • 后面的索引字段表示索引按索引字段进行何种排序,可选项
  • 多个索引字段用英文逗号" , "隔开

4.管理索引

//注意:[]表示可选项
Exec sp_helpindex 表名   
           --查看索引定义

Exec sp_rename '表名.旧索引名','新索引名'[,' 对象类型']  
           --将索引名由'旧索引名'改为'新索引名',[赋予新的类型]

drop index 表名.索引名  
           --删除表中的相关索引

dbcc showcontig(表名, 索引名) 
           --检查表中索引目标索引的碎片信息

dbcc indexdefrag(数据库名, 表名, 索引名)  
           --整理目标数据库中目标表的目标索引上的碎片

update statistics 表名  
           --更新目标表中的全部索引的统计信息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空名_Noname

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值