2010-03-01 84 views
3

我們有一個查詢,需要2秒鐘才能在Sql Server Management Studio中運行,但需要13秒才能顯示在客戶端屏幕上。 我用dotTrace來剖析我的源代碼,並注意到有這個SNIReadSync方法(ADO.net程序集的一部分),需要很多時間來完成它的工作(9秒)。我跑過我的源代碼服務器,所以我可以省略網絡效應和結果是一樣的。Ado.net性能:SNIReadSync做什麼?

如果我使用OleDBConnection或SqlConnection,這並不重要。

如果我使用的是DataReader或DataSet,那並不重要。

連接池並不能解決這個問題(正如我的結果所示)。

我對這個問題進行了搜索,我無法找到這個方法實際上在做什麼以及我們如何改進它的問題的答案。

這裏是我的StakOverFlow發現這不是有益的或者: https://stackoverflow.com/questions/1610874/snireadsync-executing-between-120-500-ms-for-a-simple-query-what-do-i-look-for

回答

2

忽略SNIReadSync了一下(我認爲這可能是一個紅鯡魚)。

您所描述的症狀聽起來像一個錯誤緩存的查詢計劃。

請更新您的統計信息(或重建索引)並查看它是否仍然存在。

+0

我無法理解的是,如果這就是爲什麼它在Management Studio中運行速度如此之快? – Beatles1692 2010-03-01 07:24:46

+0

由於SSMS發出導致重新編譯執行的前導碼。你有沒有按照我的建議完成? – 2010-03-01 08:58:50

+0

非常感謝米奇,我遇到了同樣的問題,重建索引解決了這個問題(分別爲99.997)。 – 2011-09-27 13:27:33