2011-04-01 54 views
0

我有一些複雜的查詢(只需選擇許多嵌套連接和子查詢)。
我注意到在SQL事件探查器中,當它從ADO的.NET應用程序執行時,需要30秒才能完成並執行129次寫入(???)。SQL Server的奇怪行爲 - 需要一些建議

當我在SQL Server Management Studio中執行了同樣的查詢(從Profiler複製)時,它只需要1.2秒和0次寫入(正確)。

你知道爲什麼有不同的執行方式取決於執行方法嗎?

爲什麼選擇使寫入數據庫?

+0

您可以快速將該查詢更改爲proc,然後從.NET代碼和SQL Server Management Studio中啓動proc? – Nikhil 2011-04-01 09:16:02

+0

「精緻」在觀察者眼中,您可能會有偏見,那麼發佈查詢並讓我們決定如何? :) – onedaywhen 2011-04-01 10:08:34

回答

1

根據查詢的運行位置,查詢可以進行不同的優化。在運行一個存儲過程時,與在SSMS中的proc內的實際查詢相同。不同之處在於一個查詢正在使用某些JOIN提示進行優化,另一個查詢不是對性能產生巨大影響的。

您可能只需手動將join hint添加到查詢。在沒有看到查詢的情況下,我可以'告訴你需要做什麼更改,但是嘗試在SSMS中運行查詢,然後查看執行計劃。

0

這個時間表明數據被緩衝,並且導致了複雜的行爲。