我正在使用 SqlCommand
执行查询,但是这个查询通常非常慢 - 大约需要 50 秒才能完成 - 无论如何我可以读取结果,因为它们一一出现?
using (SqlConnection connection = new SqlConnection(ExportMetrics.CreateConnectionString()))
{
SqlCommand command = new SqlCommand(sqlQuery, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
//Read results
}
catch (Exception e)
{
//Exception
}
finally
{
reader.Close();
}
}
}
最佳答案
“逐一读取结果”是 SqlDataReader 已经执行的操作。
这是否有帮助取决于查询。使用 GROUP BY+聚合函数或 ORDER BY1 子句的查询通常必须在服务器内存中具体化整个结果集,然后才能开始返回结果。其他语言结构可能也需要这个。没有这些语言功能的查询可能能够更快地返回结果,具体取决于执行计划。
但是 50 秒在 SQL 世界中是一个漫长的时间。几乎总有一种方法可以重写查询或调整索引以使其运行速度更快。当然,除非我们能够看到查询、表结构和索引都作为问题的一部分列出,否则我们无能为力。
1 如果 ORDER BY 子句与主键或其他与 JOIN 相关的重要索引匹配,使得请求的顺序与查询工作集使用的顺序匹配,并且这可以通过数学方式显示,您可能还是可以的。
关于c# - 如何使用 SqlCommand 获取查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53398279/