前言

這一節(jié)我們還是繼續(xù)講講索引知識,前面我們聚集索引、非聚集索引以及覆蓋索引等,在這其中還有一個過濾索引,通過索引過濾我們也能提高查詢性能,簡短的內(nèi)容,深入的理解。

過濾索引,在查詢條件上創(chuàng)建非聚集索引(1)

過濾索引是SQL 2008的新特性,被應用在表中的部分行,所以利用過濾索引能夠提高查詢,相對于全表掃描它能減少索引維護和索引存儲的代價。當我們在索引上應用WHERE條件時就是過濾索引。也就是滿足如下格式:

CREATE NONCLUSTERED INDEX <index name>ON <table> (<columns>)
WHERE <criteria>;
GO

下面我們來看一個簡單的查詢

Android培訓,安卓培訓,手機開發(fā)培訓,移動開發(fā)培訓,云培訓培訓

USE AdventureWorks2012
GO

SELECT SalesOrderDetailID, UnitPrice
FROM Sales.SalesOrderDetail
WHERE UnitPrice > 2000GO

Android培訓,安卓培訓,手機開發(fā)培訓,移動開發(fā)培訓,云培訓培訓

上述列中未建立任何索引,當然除了SalesOrderDetailID默認創(chuàng)建的聚集索引,這種情況下我們能夠猜想到其執(zhí)行的查詢計劃必然是主鍵創(chuàng)建的聚集索引掃描,如下

Android培訓,安卓培訓,手機開發(fā)培訓,移動開發(fā)培訓,云培訓培訓

上述我們已經(jīng)說過此時未在查詢條件上創(chuàng)建索引,所以此時必然走的是主鍵創(chuàng)建的聚集索引,接下來我們首先在UnitPrice列上創(chuàng)建非聚集索引來提高查詢性能, 

CR
        
		

網(wǎng)友評論