2013-10-31 12 views
1

我有一個基於Microsoft SQL Server的第三方應用程序,即使對於簡單的選擇查詢也使用遊標。它看起來像.exe文件,我不能改變任何東西。如何在不重寫任何代碼的情況下提高SQL Server遊標性能?

我的問題是:我可以從SQL Server數據庫管理員端以某種方式提高此應用程序的性能嗎?更改一些SQL Server配置參數等。

換句話說:DBA可以在不更改應用程序的源代碼的情況下提高光標性能嗎?

一些更多的信息和例子。

我有這樣一個非常簡單的查詢(我從SQL跟蹤中得到它)。

select id, name from my_table 

有用於idname列的索引。 my_table有700 000條記錄。

如果我在SQL Server Management Studio中運行它,它會立即返回第一個結果並在7秒內獲取所有結果。

但是這個第三方應用程序僅在7秒後才返回第一個結果。我比較了SQL跟蹤,我發現這個第三方應用程序使用遊標運行這個簡單的查詢,並將數據返回到網格。對於這個簡單的例子,我不能用索引等做很多事情,執行計劃是完美的。等等。

回答

0

可能。查看查詢執行計劃,創建索引並嘗試再次運行代碼以進行良好測量。

通常,創建索引並在其中包含用於where,join,having子句的列是很好的。有很多關於這方面的信息可以閱讀,它歸結爲測試和理解我的經驗中的執行計劃。

如果您無法更改其代碼並且索引已到位。檢查索引的碎片並確保它們是好的,否則可能會投入一項每天晚上重建它們的工作。

另一件事,服務器是否有足夠的RAM內存?這樣它可以將所有的日期存儲在RAM而不是磁盤上?

+0

不好意思,我在問題描述中加入了一些更多的信息和例子。我不能用索引,執行計劃等做很多事情。它關於程序如何運行SQL查詢。 – Zlelik

+0

我在回答中添加了一些內容,我想到的內容可能會有所幫助。 – Johan

+0

索引碎片我會檢查。謝謝。 關於「RAM中的所有數據」,我認爲對我來說可能很難,因爲數據會增長。但是你的意思是什麼樣的數據?只有一個表,只有一個數據庫或什麼? 也許我可以把臨時數據庫放入內存,但它會在光標使用情況下有幫助嗎? – Zlelik

相關問題