T-SQL 语句(七)—— 索引

2/13/2017来源:SQL技巧人气:2842

T-SQL 语句(七)—— 索引

一、创建索引
CREATE INDEX IX_PRoduct_name ON product(product_name) -- 创建的索引默认为升序排列 CREATE INDEX IX_product_name__age ON product(name,age) -- 创建复合索引 CREATE UNIQUE INDEX IX_product_name ON product(name) -- 创建唯一索引 CREATE CLUSTERED INDEX IX_id ON product(id) -- 创建聚集索引 CREATE NONCLUSTERED INDEX IX_product_name ON product(name desc) -- 创建非聚集索引,倒叙排序 CREATE INDEX IX_product_price_amount ON [order](price,amount) INCLUDE (discount) -- 创建包含性列索引 -- 创建索引并制定其所在文件组 ALTER DATABASE demo ADD FILEGROUP new_file_group GO ALTER DATABASE demo ADD FILE(NAME = new_file, FILENAME = 'D:\db\demo_new_file.ndf') TO FILEGROUP new_file_group GO CREATE INDEX IX_fg ON product(store) ON new_file_group WITH( PAD_INDEX = ON, --启用填充索引 FILLFACTOR = 60 -- 创建填充因子 SORT_IN_TEMPDB = ON, -- 在tempdb存储临时排序信息 IGNORE_DUP_KEY = ON, -- 忽略索引的重复键值 STATISTICS_NORECOMPUTE = OFF -- 关闭自动重新计算统计信息 ) GO
二、查看索引信息
EXEC sp_helpindex 'product' SELECT * FROM sys.indexes DECLARE @databaseid INT DECLARE @objectid INT SET @databaseid = DB_ID(N'demo') SET @objectid = OBJECT_ID(N'employee') -- 查看所有所有的碎片信息 SELECT * FROM sys.dm_db_index_physical_stats (@databaseid,@objectid,null,null,null)
三、修改索引
ALTER INDEX IX_product_name ON product REBULD -- 重新生成索引,会删除原有索引 WITH( -- 设置索引填充 PAD_INDEX= ON, FILLFACTOR = 70) GO ALTER INDEX IX_product_name ON product REORGANIZE -- 重新组织索引,不删除原有索引 ALTER INDEX PK_prodcut ON product DISABLE -- 禁用索引 GO
四、删除索引
DROP INDEX product.IX_product_name
五、索引视图

索引视图已经将视图实体化,视图里的查询语句的查询结果是保存在数据库的物理存储空间中的。创建索引视图的前提有:视图必须绑定到架构已经视图的索引里必须有一个是唯一的聚集索引。

CREATE VIEW view_order WITH SCHEMABINDING -- 架构绑定 AS SELECT e.name,o.id,o.amount,o.payment,o.date FROM employee e JOIN [order] o ON e.id = o.employee_id GO CREATE UNIQUE CLUSTERED INDEX IX_order ON [order](id) GO