簡體   English   中英

c#將SqlClient排序結果與ORDER BY一起使用非常慢

[英]c# using SqlClient ordering results with ORDER BY is extremely slow

以下是我使用SqlClient獲取排序結果集時在C#中遇到的奇怪情況。

以SQL-Query為例:

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毫秒內完成,因此兩台計算機之間的鏈接不會成為問題。

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

所以我的問題是:與sql-server本身相比,C#中的SqlClient與ORDER BY一起將使用時間乘以成千上萬是怎么回事? =)

嘗試一次又一次運行查詢兩次,看看是否存在時差。 這將確定是花費時間的連接還是查詢。

當您測量連接所花費的時間時,您僅在測量您所考慮的部分。 直到需要時才開始與數據庫的實際會話,即在您運行第一個查詢時。

在同一主題上,這里有個很好的描述: http : //social.msdn.microsoft.com/Forums/en/sqldataaccess/thread/aa4537ed-fb69-441d-82d3-0216f497f995

該查詢可以幫助您發現SSMS與應用程序之間的差異。

SELECT * FROM sys.dm_exec_connections;

也來看看@ http://forums.asp.net/t/917652.aspx

很抱歉浪費您的時間,我自己發現了問題。 我使用了不同的數據庫(在sql-server本身上測試查詢時使用快速和優化的生產數據庫,在c#中測試緩慢的未優化的開發數據庫)。 -.-

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM