SQL Server Management Studio中的执行/最小值是否可以查询执行次数或只是估计值?

时间:2013-04-02 19:40:16

标签: sql-server tsql ssms

我们偶尔会在Expensive Queries下的Activity Monitor中看到一个超过11,000的查询。

我在代码中看到一个查询正在循环中执行,我意识到这不是最好的方法(我没有写它但可能需要修复它)。

我认为循环不会创建11,000次迭代,更像是一次20次。所以我的问题是,如果代码在1/550秒内执行20个查询,那么每分钟会出现11,000次执行吗?或者Activity Monitor真的意味着查询真的执行了11,000次吗?

DataTable JobsDT = new DataTable();
DataTable oqDT = new DataTable();
DataTable ePickupDT = new DataTable();
DataTable upDT = new DataTable();
JobsDT = Q.SelectRecords("SELECT [Quote]... etc etc etc" + ((Filters.Length > 0) ? Filters : "") + ") ORDER BY " + SortBy + " " + SortDirection);
    oqDT=...;
    ePickupDT=...;
    upDT=...;

//Merge the datatables
DT.Merge(JobsDT);
DT.Merge(oqDT);
DT.Merge(ePickupDT);
DT.Merge(upDT);

//Build cart header
Cart += "<table id='CurrentOrdersDiv' style='font-family: Arial; font-size: small;' width='100%' cellpadding='2' cellspacing='0'>";

//Build cart body
for (int row = 0; row < DT.Rows.Count; row++)
{
    try { Adjustment = (Q.SelectRecords("SELECT [PriceAdjustment] FROM [Media] WHERE [PriceAdjustment] > 0 AND [Quote] = " + Convert.ToInt32(DT.Rows[row]["Quote"])).Rows.Count > 0) ? true : false; } catch { }
    //Create flags
}

1 个答案:

答案 0 :(得分:1)

我肯定不知道这一点,但我不认为执行/最小“推断”。所以在你的例子中,如果在几分之一秒内发生了20次查询(并且在那一分钟内没有再次发生),我认为Execution / Min只会被平均为20.您可以检查sys.dm_exec_query_stats.execution_count以查看是否11000号是有意义的。

也许你的代码每次运行只执行大约20个查询,但是经常运行?