--概要:SqlService常用语句[索引]
--设计者:DuanXuWen
--设计时间:20180504
--版本:0.1
--修改者:
--修改时间:
--①创建索引语法
-------------------------------------------------------------------------------
CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED]
INDEX index_name ON { table | view } (column [ASC|DESC] [ ,...n ] )
[WITH[PAD_INDEX]
[[,]FILLFACTOR=fillfactor]
[[,]IGNORE_DUP_KEY]
[[,]DROP_EXISTING]
[[,]STATISTICS_NORECOMPUTE]
[[,]SORT_IN_TEMPDB]
]
[ON filegroup]
--②语法说明
-------------------------------------------------------------------------------
--CREATE INDEX命令创建索引各参数说明如下:
--UNIQUE:用于指定为表或视图创建唯一索引,即不允许存在索引值相同的两行。
--CLUSTERED:用于指定创建的索引为聚集索引。
--NONCLUSTERED:用于指定创建的索引为非聚集索引。
--index_name:用于指定所创建的索引的名称。
--table:用于指定创建索引的表的名称。
--view:用于指定创建索引的视图的名称。
--ASC|DESC:用于指定具体某个索引列的升序或降序排序方向。
--Column:用于指定被索引的列。
--PAD_INDEX:用于指定索引中间级中每个页(节点)上保持开放的空间。
--FILLFACTOR = fillfactor:用于指定在创建索引时,每个索引页的数据占索引页大小的百分比,fillfactor的值为1到100。
--IGNORE_DUP_KEY:用于控制当往包含于一个唯一聚集索引中的列中插入重复数据时SQL Server所作的反应。
--DROP_EXISTING:用于指定应删除并重新创建已命名的先前存在的聚集索引或者非聚集索引。
--STATISTICS_NORECOMPUTE:用于指定过期的索引统计不会自动重新计算。
--SORT_IN_TEMPDB:用于指定创建索引时的中间排序结果将存储在 tempdb 数据库中。
--ON filegroup:用于指定存放索引的文件组。
--③创建索引实例
-------------------------------------------------------------------------------
--例子1
--表MyTable创建一个名为idx_MyColumn的非聚集索引,索引字段为MyColumn
CREATE INDEX idx_MyColumn
ON MyTable(MyColumn)
--例子2
--表MyTable创建一个名为idx_Id的唯一聚集索引,索引字段为Id
--要求成批插入数据时忽略重复值,不重新计算统计信息,填充因子为40
CREATE UNIQUE CLUSTERED INDEX idx_Id
ON MyTable(Id)
WITH PAD_INDEX,
FILLFACTOR=40,
IGNORE_DUP_KEY,
STATISTICS_NORECOMPUTE
--④管理索引
-------------------------------------------------------------------------------
EXEC sp_helpindex MyTable --查看索引定义
EXEC sp_rename 'MyTable.idx_MyColumn','idx_MyColumn_1' --将索引名由'idx_MyColumn' 改为'idx_MyColumn_1'
DROP INDEX MyTable.idx_MyColumn_1 --删除MyTable表中的idx_MyColumn_1索引
DBCC showcontig(MyTable,idx_MyColumn) --检查MyTable表中索引idx_MyColumn的碎片信息
DBCC indexdefrag(Test,MyTable,idx_MyColumn) --整理Test数据库中MyTable表的索引idx_MyColumn上的碎片
UPDATE STATISTICS MyTable --更新MyTable表中的全部索引的统计信息