use tempdb
----在创建视图和所有底层表时,必须打开ANSI_NULLS以及QUOTED_IDENTIFIER选项
--SET ANSI_NULLS ON
--GO
--SET QUOTED_IDENTIFIER ON
--GO
----创建两张表,一张表头,一张明细,仅仅作为DEMO使用
--CREATE TABLE HeadTable
--(
-- HeadId INT PRIMARY KEY ,
-- HeadInfo VARCHAR(50) ,
-- DataStatus TINYINT ,
-- CreateDate Datetime
--)
--GO
--CREATE TABLE DetailTable
--(
-- DetailId INT identity(1,1) PRIMARY KEY ,
-- HeadId INT ,
-- DatailInfo VARCHAR(50)
--)
--GO
----写入数据
--DECLARE @i int = 0
--WHILE @i<200000
--BEGIN
-- INSERT INTO HeadTable values (@i,NEWID(),RAND()*10,GETDATE()-RAND()*100)
-- INSERT INTO DetailTable(HeadId,DatailInfo) VALUES (@i,NEWID())
-- SET @i=@i+1
--END
--GO
------索引视图创建
CREATE VIEW HDTable_vw WITH SCHEMABINDING
AS
SELECT H.HeadId,H.CreateDate,H.DataStatus,D.DetailId,D.DatailInfo
FROM dbo.HeadTable H
INNER JOIN dbo.DetailTable D ON H.HeadId = D.HeadId
WHERE H.DataStatus > 0
GO
------为视图创建索引
CREATE UNIQUE CLUSTERED INDEX IX_HDId ON HDTable_vw(DetailId,HeadId)
---测试
--原表查询
--SET STATISTICS TIME ON --开启统计时间
SELECT H.HeadId,H.CreateDate,H.DataStatus,D.DetailId,D.DatailInfo
FROM dbo.HeadTable H
INNER JOIN dbo.DetailTable D ON H.HeadId = D.HeadId
WHERE H.DataStatus > 0
--索引视图查询
--SET STATISTICS TIME ON --开启统计时间
SELECT HeadId,CreateDate,DataStatus,DetailId,DatailInfo
FROM HDTable_vw
WHERE DataStatus > 0