Asp.net MVC Web应用程序中的.NET实体数据模型。数据库在Azure中。我试图用这样的Sql查询计算查询的任何一侧的开始和结束时间。
start = DateTime.Now;
var query = item.Database.SqlQuery<CustomerQuery>(queryString);
end = DateTime.Now;
我正在计算这样的时间
Duration = end.Subtract(start);
现在无论返回多少结果,有时成千上万的时间实际上是相同的。
这是为什么?有没有办法获得更准确的时间
答案 0 :(得分:3)
好吧,我不是这个堆栈的专家,但似乎SqlQuery返回DbRawSqlQuery对象,它封装了查询,但没有执行它。正如MSDN所说“在枚举时将执行查询的DbRawSqlQuery对象。”
因此,您应该实现查询,例如通过调用ToList()
。
var query = item.Database.SqlQuery<CustomerQuery>(queryString).ToList();
答案 1 :(得分:0)
DateTime.Now方法不是计时毫秒的最佳方法,您可以在Jon here的答案中阅读更多相关内容。您应该使用可以像这样使用的Stopwatch类。
using System.Diagnostics;
方法
var sw = new Stopwatch();
sw.Start();
var query = item.Database.SqlQuery<CustomerQuery>(queryString);
sw.Stop();
var totalTime = sw.ElapsedMilliseconds;
答案 2 :(得分:0)
如果您使用的是Azure,则可能还可以使用Application Insights。您可以将应用程序配置为将信息发送到Azure。
见
https://azure.microsoft.com/en-gb/documentation/articles/sql-database-query-performance/ https://azure.microsoft.com/en-gb/documentation/articles/app-insights-asp-net/