2012-07-24 35 views
1

我遇到性能問題。SQL Server 2008上的大容量繁重讀取加載數據的性能

我們有它出現在一個幾百萬記錄的表,我們服務了一個網頁,點擊該表100的次每秒(一個選擇)。該查詢是由一個非聚集索引(包裹在一個SP中)

我的問題是針對我們想要改善性能的特定場景,是否明智的做法是創建一個總是屈服的視圖對於這個場景300行,併爲視圖編制索引並查詢視圖,或者如果我用已覆蓋的查詢查詢現有的2M plus表,它會沒有什麼區別嗎?

+0

據我所知,一個視圖只是在幕後運行選擇 - 我不認爲這會爲您提供一個優勢。 – Bridge 2012-07-24 11:32:19

回答

1

您可以儘可能創建與您的查詢匹配的視圖併爲其編制索引。據我所知,你只是想申請一個where子句。這將起作用,它將削減零的運行時間成本。它也將刪除所有不符合條件的行的IO。這是一個好主意。

但是,你可以使用過濾(覆蓋)指數,這要簡單得多。

從覆蓋索引獲取範圍的速度儘可能快。它非常快速。沒有可能的改進。

真正的問題似乎是您要查詢的時間數據庫100的!你不能將這些查詢放到一個或幾個更大的查詢中嗎?可以使用表值參數一次提交多個查詢輸入,可以這麼說。

+0

你誤會了。沒有頂部,我們正在爲此場景應用where子句過濾器,並將其視爲視圖並將其編入索引。我想要這種方法和直接查詢表(它也有索引)之間的性能差異 – Ahsan 2012-07-24 11:43:51

+0

我編輯我的答案,以反映我對問題的新理解。 – usr 2012-07-24 11:57:26

+1

@ user1548513我們幾乎不可能猜測特定硬件/分貝設計的性能差異。這種類型的問題的答案通常是嘗試它,看看我害怕。 – Bridge 2012-07-24 12:56:16

0

喜按我的理解,這裏總是產生一個300行的具體情況,您要創建一個view.So如果是這樣的情況下,它能夠處理的選擇性列this.Also創建覆蓋索引的最佳方式在視圖上肯定會提高性能。