c#使用SqlClient ORDER BY的排序结果非常慢

问题描述:

以下奇怪的情况我昨天在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

尝试两次运行查询后,看看是否有时差。这将确定它是连接还是需要时间的查询。

当您测量连接需要多长时间时,您只能测量您认为的部分内容。除非需要它,即运行第一个查询时,才会启动与数据库的实际会话。

看一看很好的说明了这里就同一主题: 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#中慢速非优化的开发数据库时,快速优化的生产数据库)。 -.-