sqlserver数据库索引创建 使用 重建 索引碎片

2025-12-16 03:08:22

1、索引介绍

     1)聚集索引:一张表只能有一个聚集索引,通常表主键就默认是聚集索引,也可以设置非主键列为聚集索引,设置聚集索引后,数据存储将按照索引列有规则的排列

     2)非聚集索引:一张表可以有多个非聚集索引,物理数据存储不会强制按照非聚集索引排列

     3)一个索引最多有16个索引列,一张表最好不要超过5个索引

     4)每当表数据变化(增、删、改)的时候,每个索引都需要按照规则更新索引位置

sqlserver数据库索引创建 使用 重建 索引碎片

2、新建一张不带主键的表

     使用如下的SQL语句,创建一张测试的不带主键的表:

     CREATE TABLE IndexTable(

          Id varchar(36) NOT NULL,

          IndexCol1 varchar(50) NULL,

          IndexCol2 varchar(50) NULL,

          IndexCol3 varchar(50) NULL

     )

sqlserver数据库索引创建 使用 重建 索引碎片

sqlserver数据库索引创建 使用 重建 索引碎片

3、设置主键,查看聚集索引

     1)使用sql语句设置Id列为主键:alter table IndexTable add constraint pk_Id primary key(Id);

     2)设置完主键后,默认就将主键列设置为了聚集索引

sqlserver数据库索引创建 使用 重建 索引碎片

sqlserver数据库索引创建 使用 重建 索引碎片

4、设置非聚集索引

     使用sql语句设置列IndexCol1为非聚集索引:create nonclustered index non_index_col1 on IndexTable(IndexCol1);

sqlserver数据库索引创建 使用 重建 索引碎片

sqlserver数据库索引创建 使用 重建 索引碎片

5、插入测试数据

     使用sql语句插入5行记录

sqlserver数据库索引创建 使用 重建 索引碎片

6、删除部分测试数据

     使用sql语句删除第2和第4行记录:delete from IndexTable where IndexCol1 = '第2行第1列' or IndexCol1 = '第4行第1列';

sqlserver数据库索引创建 使用 重建 索引碎片

7、查看索引碎片比例

     使用sql语句命令 DBCC showcontig('IndexTable'); 即可查看索引的碎片率,当碎片率比较高的时候,就可以重建索引了

sqlserver数据库索引创建 使用 重建 索引碎片

8、重建索引

     1)建立索引后,删除数据库时,索引行位置也会删除,但是索引中这里就会留下空白,后面的数据也不会占用这个位置,久而久之,索引里面就会有很多的空白,称为索引碎片,此时需要通过重建索引来消除索引碎片

     2)使用sql语句命令重建索引:DBCC DBREINDEX('IndexTable');

sqlserver数据库索引创建 使用 重建 索引碎片

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢