背景:
索引分類:眾所周知,索引分為聚集索引和非聚集索引.
索引優點:加速數據查詢.
問題:然而我們真的清楚索引的應用嗎?你寫的查詢語句是否能充分應用上索引,或者說你如何設計你的索引讓它更高效?
經歷:以前本人只知道索引的好處,但是是否能夠真正讓它發揮作用,並無太多理論,為些本人做了些DEMO,來簡單說明下什麼情況下才能充分利用索引.
案例:
這裡建立一個學生表:有如下字段,此時表中沒有建立任何索引.CREATE TABLE [dbo].[student](
[ID] [int] IDENTITY(1,1) NOT NULL,--學生ID
[sUserName] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,--學生姓名
[sAddress] [varchar](200) COLLATE Chinese_PRC_CI_AS NULL,--學生地址
[classID] [int] NULL,--學生所屬班級ID
[create_date] [datetime] NULL CONSTRAINT [DF_student_create_date] DEFAULT (getdate()) --入校時間
) ON [PRIMARY]
業務需求:
查詢班級ID為9的所有學生的姓名和地址.
情況一:
--字段沒有建立任何索引
select sUserName,sAddress from student
where classID=9
執行計劃如下圖:
結論:在沒有任何索引的情況下,查詢會選擇全表掃描.