如何从c#代码中获取SQL查询统计信息?

本文关键字:查询 SQL 统计 信息 获取 代码 | 更新日期: 2023-09-27 18:03:01

我正在使用SqlCommand类从Visual Studio 2015运行查询。我需要知道运行查询所需的时间和结果集的大小。我知道我可以用SQL Server Management Studio获得这些信息,但我不知道如何从Visual Studio获得它。

如何从c#代码中获取SQL查询统计信息?

您可以使用StopWatch来计时:

StopWatch sw = new StopWatch();
sw.Start();
// Run query here
sw.Stop();
// Check sw.ElapsedMilliseconds or some other property you prefer

要获得结果集的大小,可以计算datareader.Read()或其他替代方法的迭代次数。

首先,进入Visual Studio中的SQL Server对象资源管理器(视图> SQL Server对象资源管理器)。然后选择查询所选数据库。右键单击> New Query。在运行查询之前,选择页面顶部附近的"包括实际执行计划":页面顶部附近按钮图片

然后您可以运行查询,在页面底部您将看到多个选项卡,如Results、Message和Execution Plan。选择Execution Plan,您将能够以百分比显示查询的成本,但是通过将鼠标悬停在成本或聚集索引扫描部分上可以找到更多信息。

我希望这对你有帮助!

您可以使用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;

查看下面的链接获取更多信息:

MSDN上的Statistic Class