2011-10-11 26 views
0

我有一個大的數據庫和表中的一個,我想創建一個NOEXPAND觀點,認爲會過濾一些從表中的記錄 - 從10條000 000記錄必須只顯示100 000,但爲視圖創建超過10分鐘的執行,並且未創建視圖。查看與NOEXPAND停止expandation

我如何才能讓視圖在SQL的背景填充或使腳本執行上超過10分鐘?

的SQL Server位於另一臺機器上,我有SQL只有管理員權限不是機器修改machine.config中。

+0

因此,您的問題基本上是如何避免創建索引視圖時從查詢界面中超過10分鐘的時間? SQL Agent是否安裝在服務器上?如果是這樣,您可以使用該腳本創建SQL代理作業,然後執行該作業。 –

+0

和/或通過查看源表上的索引等來優化查詢的執行? – MatBailie

+0

@Dems - 我將問題解釋爲意味着他們在視圖上執行了「CREATE INDEX」語句,並且這太耗時了,而不是執行任何種類的「SELECT」查詢。 –

回答

1

如果我理解正確的,你沒有足夠的訪問權限去到與SQL Server遠程機設置的意見/索引你需要什麼? 但是您確實有足夠的權利從您的代碼中動態執行創建視圖?

如果你想從10M中篩選出10萬行,我建議你創建一個索引視圖,包含精確選擇的列,只包含你需要的列,並且過濾掉所有可能的行不需要。

例如,你希望只在今年的日期的工作,你有10年的數據庫中的數據。

您可以創建一個視圖,但WITH SCHEMABINDING選項,這將允許您對視圖中添加聚集指數。

完成之後,您可以自由地調用新的視圖(可能在SELECT中有WITH(NOEXPAND)選項),並且只會通過您要求的100k行進行搜索。現在

,因爲你不能直接訪問該服務器的SQL經理,只寫你創建視圖和創建索引的SQL,並從代碼中執行它。你會這樣做,它會永久堅持在你的服務器。

希望我已經安裝好了,否則我可能完全忽略了這一點。 :) 但是,如果你想過濾掉不需要的數據,索引視圖將是一條路。

相關問題