前言

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

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

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

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

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

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

USE AdventureWorks2012
GO

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

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

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

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

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

CR
        
		

網(wǎng)友評論