我们偶尔会在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
}
答案 0 :(得分:1)
我肯定不知道这一点,但我不认为执行/最小“推断”。所以在你的例子中,如果在几分之一秒内发生了20次查询(并且在那一分钟内没有再次发生),我认为Execution / Min只会被平均为20.您可以检查sys.dm_exec_query_stats.execution_count以查看是否11000号是有意义的。
也许你的代码每次运行只执行大约20个查询,但是经常运行?