Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c使用SqlClient排序结果和orderby非常慢_C#_Performance_Sqlclient_Sql Order By - Fatal编程技术网

C# c使用SqlClient排序结果和orderby非常慢

C# c使用SqlClient排序结果和orderby非常慢,c#,performance,sqlclient,sql-order-by,C#,Performance,Sqlclient,Sql Order By,下面是我昨天在c中使用SqlClient获取排序结果集时遇到的奇怪情况 例如,以下SQL查询: 选择Num,Name FROM Customer,其中Num类似于“%V%”或Name类似于“%V%”按Num ASC排序 在这种特殊情况下,要订购的结果集大约有100行长 问题是:如果我在sql server本身上运行查询,它会非常快!结果几乎就在我单击RunQuery时显示出来。但是当我使用SqlClient在C中运行查询时,速度非常慢,大约5-10秒。我对我的程序的每一个小部分进行了基准测试,发

下面是我昨天在c中使用SqlClient获取排序结果集时遇到的奇怪情况

例如,以下SQL查询:

选择Num,Name FROM Customer,其中Num类似于“%V%”或Name类似于“%V%”按Num ASC排序

在这种特殊情况下,要订购的结果集大约有100行长

问题是:如果我在sql server本身上运行查询,它会非常快!结果几乎就在我单击RunQuery时显示出来。但是当我使用SqlClient在C中运行查询时,速度非常慢,大约5-10秒。我对我的程序的每一个小部分进行了基准测试,发现连接到sql server只需10毫秒左右,因此这两台机器之间的链接不可能是问题所在

我尝试了几乎所有的方法,直到我发现,如果我从查询中删除orderbynumasc,那么使用SqlClient的C查询返回结果的速度几乎与直接在sql服务器上运行查询的速度一样快


所以我的问题是:与sql server本身相比,C中的SqlClient到底在用ORDER BY将使用的时间乘以数亿,这是什么=

尝试一个接一个地运行查询两次,看看是否有时差。这将决定是连接还是查询需要时间


当你测量连接需要多长时间时,你只是在测量你所想的一部分。只有在您需要时,即运行第一个查询时,才会启动与数据库的实际会话。

请查看此处关于同一主题的详细说明:

此查询可能会帮助您发现SSM和应用程序之间的差异

SELECT * FROM sys.dm_exec_connections;

也来看看这个

对不起,占用了你的时间,我自己发现了这个问题。我使用了不同的数据库—在sql server上测试查询时使用了快速优化的生产数据库,在c中使用了缓慢的非优化开发数据库-

你能举一个最简单的例子来说明这个问题吗?你有没有尝试过用RowNumber之类的东西来限制结果集的大小?这与SqlClient没有特别的关系,但这是一种数据库访问优化策略。@Felice Pollano:从问题中的信息来看,你似乎误用了优化这个词-