SQL Server-索引的创建和删除

摘要

通过索引可以快速访问表中的记录,大大提高了数据库的查询性能。本篇介绍创建、更新、删除索引的方法。

索引

索引是对数据库表中一个或多个列的值进行排序的逻辑结构。每个索引都有一个特定的搜索码与表中的记录关联。索引按顺序存储搜索码的值。

使用索引能够快速访问表中的记录,提高查询速度。何时使用索引由SQL Server DMBS确定。

索引类型及特点

SQL Server有两种类型的索引:聚簇索引和非聚簇索引。

1.聚簇索引

聚簇索引指示表中数据行按索引键的排序次序存储。在SQL Server中,如果该表上尚未创建聚簇索引,且在创建PRIMARY KEY约束时未指定非聚簇索引,系统会自动在此PRIMARY KEY键上创建聚簇索引。

聚簇索引的特点如下:

  • 每个表只能有一个聚簇索引。
  • 聚簇索引改变数据的物理排序方式,使得数据行的物理顺序和索引中的键值顺序是一致的。所以,应该在创建任何非聚簇索引之前创建聚簇索引。

2.非聚簇索引

非聚簇索引具有完全独立于数据行的结构。数据表中的数据行不按索引键的次序存储。在非聚簇索引中,每个索引都有指针指向包含该键值的数据行。

非聚簇索引的特点如下:

  • 如果创建索引时没有指定索引类型,默认情况下为非聚簇索引。
  • 应当在创建非聚簇索引之前创建聚簇索引。
  • 每个表最多可以创建259个非聚簇索引。
  • 包含索引的所有长度固定列的最大大小为900B。
  • 包含在同一索引中的列的最大数目为16。
  • 最好在唯一值较多的列上创建非聚簇索引。

使用索引的准则

业务规则﹑数据特征和数据的使用决定了创建索引的列。一般情况下,应当在经常被查询的列上创建索引,以便提高查询速度。但索引将占用磁盘空间,并且降低添加、删除更新行的速度。

1.创建查询的列

  • 主关键字所在的列。
  • 外部关键字所在的列或在连接查询中经常使用的列。
  • 按关键字的范围值进行搜索的列。
  • 按关键字的排序顺序访问的列。

2.不使用索引的列

  • 在查询中很少涉及的列。
  • 包含较少的唯一值。
  • 更新性能比查询性能更重要的列。
  • 有text , ntext或image数据类型定义的列。

 

创建索引

1.交互式为表创建,则在此主键自动创建聚簇索引。

用表设计器打开数据库jxsk中的表SC,在SC表设计器中,右击,选择“索引/键”选项,打开“索引/键”对话框。此时窗口中内容为空,说明表SC中没有创建任何索引。单击“关闭”按钮,返回表设计器。

同时选中列SNO和列CNO,单击工具栏中的“🔑”按钮,即在SNO和CNO上创建了主键。

在SC表设计器中,右击,选择“索引/键”选项,打开“索引/键”对话框,查看列表中的信息:索引“列”是SNO(ASC)和CNO(ASC),当前的索引“名称”为PK_SC,“创建为聚集的”为“是”。此索引即是创建主键时,系统自动生成的聚簇索引。

2.用create语句为表按降序创建聚簇索引

create clustered index IND_TNO on T(TNO desc)

3.交互式为表按升序和降序创建非聚簇索引

在SQL Server Management Studio中,用表设计器打开数据库jxsk 中的数据库表T。在表设计器中,右击,选择“索引/键”选项,打开“索引/键”对话框。

单击“添加”按钮﹐观察“索引/键”对话框中各项的变化。在右侧列表中,单击“列”行中的一个单元格,再单击该行右端的“…”按钮,打开“索引列”对话框﹐TNO列上按升序和在AGE列上按降序创建非聚簇索引。设置完成后单击“确定”按钮返回“索引/键”对话框。

在“索引/键”对话框中,将“名称”设置为IND_TNO_AGE,关闭对话框后保存修改。

4.用create语句为表按升序创建唯一索引

create unique index IND_CN on C (CN asc)

  

删除索引

1.交互式删除表中的索引

在SQL Server Management Studio 中,用表设计器打开数据库表C。

单击工具栏中的“表设计器”按钮,选择“索引/键”选项,打开“索引/键”对话框,可以看到表C中存在上面创建的索引。

选定要删除的索引IND_CN,单击删除按钮,即删除成功。

2.用drop语句删除表中的索引

drop index IND_TNO_AGE on T

  

 

posted @ 2022-05-19 11:35  Khrushchefox  阅读(1143)  评论(0编辑  收藏  举报