前言
在学习SQL 2012基础教程过程中会时不时穿插其他内容来进行讲解,相信看过SQL Server 2012 T-SQL基础教程的童鞋知道前面写的所有内容并非都是摘抄书上内容,如若是这样那将没有任何意义,学习的过程必须同时也是一个思考的过程,无论是独立思考也好还是查资料也罢都是思考而非走马观花,要不然过一段时间又会健忘。简短的内容,深入的理解,Always to review the basics。
USE SQLStudy
GO
CREATE TABLE [dbo].[Test](
[ID] [int] NOT NULL,
[First] [nchar](10) NULL,
[Second] [nchar](10) NULL
)
GO
接下来我们再来创建测试数据
INSERT INTO [SQLStudy].[dbo].[Test] ([ID],[First],[Second])
SELECT 1,'First1','Second1'
UNION ALL
SELECT 2,'First2','Second2'
UNION ALL
SELECT 3,'First3','Second3'
UNION ALL
SELECT 4,'First4','Second4'
UNION ALL
SELECT 5,'First5','Second5'
GO
紧接着我们对表上的First和Second列创建聚集索引,如下
CREATE NONCLUSTERED INDEX [IX_MyTable_NonClustered] ON [dbo].[Test] (
[First] ASC,
[Second] ASC
)
此时我们来同时运行两个查询,看看其执行计划【注】:上一篇已经说过,请启用包括实际执行的计划。
SELECT ID
FROM [dbo].[Test] WHERE [First] = 'First1' AND [Second] = 'Second1'
SELECT Second
FROM [dbo].[Test] WHERE [First] = 'First1' AND [Second] = 'Second1'
GO
此时我们看到的执行计划如下:
CREATE CLUSTERED INDEX [IX_MyTable_Clustered] ON [dbo].[Test] (
[ID] ASC
)
此时我们再来运行如下查询:
SELECT ID
FROM [dbo].[Test] WHERE [First] = 'First1' AND [Second] = 'Second1'
SELECT Second
FROM [dbo].[Test] WHERE [First] = 'First1' AND [Second] = 'Second1'
GO
此时再来看看查询执行计划: