前言
這一節(jié)我們還是繼續(xù)講講索引知識(shí),前面我們聚集索引、非聚集索引以及覆蓋索引等,在這其中還有一個(gè)過濾索引,通過索引過濾我們也能提高查詢性能,簡(jiǎn)短的內(nèi)容,深入的理解。
過濾索引,在查詢條件上創(chuàng)建非聚集索引(1)
過濾索引是SQL 2008的新特性,被應(yīng)用在表中的部分行,所以利用過濾索引能夠提高查詢,相對(duì)于全表掃描它能減少索引維護(hù)和索引存儲(chǔ)的代價(jià)。當(dāng)我們?cè)谒饕蠎?yīng)用WHERE條件時(shí)就是過濾索引。也就是滿足如下格式:
CREATE NONCLUSTERED INDEX <index name>ON <table> (<columns>) WHERE <criteria>; GO
下面我們來看一個(gè)簡(jiǎn)單的查詢
USE AdventureWorks2012 GO SELECT SalesOrderDetailID, UnitPrice FROM Sales.SalesOrderDetail WHERE UnitPrice > 2000GO
上述列中未建立任何索引,當(dāng)然除了SalesOrderDetailID默認(rèn)創(chuàng)建的聚集索引,這種情況下我們能夠猜想到其執(zhí)行的查詢計(jì)劃必然是主鍵創(chuàng)建的聚集索引掃描,如下
上述我們已經(jīng)說過此時(shí)未在查詢條件上創(chuàng)建索引,所以此時(shí)必然走的是主鍵創(chuàng)建的聚集索引,接下來我們首先在UnitPrice列上創(chuàng)建非聚集索引來提高查詢性能,
CR