2011-01-21 64 views
0

以下奇怪的情況我昨天在C#中使用SqlClient獲得排序的結果集。c#使用SqlClient ORDER BY的排序結果非常慢

下面的SQL查詢,例如:

SELECT Num, Name FROM Customer WHERE Num LIKE '%V%' OR Name LIKE '%V%' ORDER BY Num ASC

的結果集在這種特殊情況下下令大約100行。

問題如下:如果我在sql-server本身上運行查詢,那該死的太快了!結果幾乎顯示在我點擊「運行查詢」的那一刻。但是當我使用SqlClient在C#中運行查詢時,速度非常慢(約5-10秒)。我對我的程序的每個小部分進行了基準測試,發現連接到sql-server的時間大約爲10毫秒,所以兩臺機器之間的鏈接不成問題。

我嘗試了幾乎所有的東西,直到我發現,使用SqlClient的C#中的查詢返回的結果幾乎與直接在sql-server上運行查詢一樣快,如果我從查詢中刪除ORDER BY Num ASC。

所以我的問題是:什麼是SqlClient在C#中使用ORDER BY將使用時間乘以數千萬與sql-server本身相比? =)

+0

你可以發佈最簡單的C#示例來展示問題嗎? – Hawxby 2011-01-21 09:25:37

回答

0

嘗試兩次運行查詢後,看看是否有時差。這將確定它是連接還是需要時間的查詢。

當您測量連接需要多長時間時,您只能測量您認爲的部分內容。除非需要它,即運行第一個查詢時,纔會啓動與數據庫的實際會話。

0

對不起,竊取你的時候,我發現這個問題我自己。我使用了不同的數據庫(在測試sql-server本身的查詢和c#中慢速非優化的開發數據庫時,快速優化的生產數據庫)。 -.-