【问题标题】:How do you get a SQL query statistics info from code in C#?如何从 C# 代码中获取 SQL 查询统计信息?
【发布时间】:2016-12-24 12:03:23
【问题描述】:
我正在使用 SqlCommand 类从 Visual Studio 2015 运行查询。我需要知道运行查询所用的时间和结果集的大小。我知道我可以使用 SQL Server Management Studio 获取该信息,但我不知道如何从 Visual Studio 获取它。
【问题讨论】:
标签:
c#
visual-studio
tsql
sqlcommand
【解决方案1】:
您可以使用StopWatch 来计时:
StopWatch sw = new StopWatch();
sw.Start();
// Run query here
sw.Stop();
// Check sw.ElapsedMilliseconds or some other property you prefer
要获取结果集的大小,可以计算 datareader.Read() 或其他替代方法的迭代次数。
【解决方案2】:
首先,进入 Visual Studio 中的 SQL Server 对象资源管理器(查看 > SQL Server 对象资源管理器)。然后选择查询您选择的数据库。右键单击 > 新建查询。在运行查询之前,请选择页面顶部附近的“包括实际执行计划”:Picture of button near top of page
然后您可以运行查询,在页面底部您将看到多个选项卡,例如结果、消息和执行计划。选择执行计划,您将能够以百分比形式查看查询成本,但更多信息可以通过将鼠标悬停在成本或聚集索引扫描部分上来找到。
我希望这会有所帮助!
【解决方案3】:
您可以使用 SMO。请尝试以下代码。
Server myServer = new Server("ServerName");
myServer.ConnectionContext.LoginSecure = true;
myServer.ConnectionContext.Connect();
Database db = myServer.Databases["dbName"];
Table myTable = db.Tables["TableName", "SchemaName"];
Statistic stat = default(Statistic);
stat = new Statistic(myTable, "StatisticName");
StatisticColumn statcol = default(StatisticColumn);
statcol = new StatisticColumn(stat, "FieldName");
stat.StatisticColumns.Add(statcol);
stat.Refresh();
var x = stat.LastUpdated;
您也可以找到其他属性。您还可以更新统计信息,甚至创建统计信息等等。
要查找表的所有统计信息,请使用以下代码,这样您就可以遍历所有统计信息并获取每个统计信息:
var allStat = myTable.Statistics;
查看以下链接了解更多信息:
Statistic Class on MSDN