执行计划,SQL Server 2012

执行计划,SQL Server 2012,sql,sql-server-2012,Sql,Sql Server 2012,我对执行计划有一个问题: 在批准it执行计划之前,我编写了一个查询,使用聚集索引扫描,读取2行: Table 'Worktable'. Scan count 1, logical reads 17 Table 'a21'. Scan count 3, logical reads 6 创建索引搜索执行后,请使用索引搜索 Scan count 43, logical reads 86. 什么更好 谢谢您无法从数字中分辨出来,因为它没有显示哪些读取是物理的,哪些是逻辑的,以及每次读取的成本有多高。

我对执行计划有一个问题:

在批准it执行计划之前,我编写了一个查询,使用聚集索引扫描,读取2行:

Table 'Worktable'. Scan count 1, logical reads 17
Table 'a21'. Scan count 3, logical reads 6
创建索引搜索执行后,请使用索引搜索

Scan count 43, logical reads 86.
什么更好


谢谢

您无法从数字中分辨出来,因为它没有显示哪些读取是物理的,哪些是逻辑的,以及每次读取的成本有多高。读/写数字几乎一文不值

相反,请测量使用的CPU时间。对于您的工作负载,由于表太小,很可能没有物理IO。所以不要测量IO


另外,比较执行计划。

@SurajSingh您认为读取次数为1000次的查询比读取次数为100次的查询慢10倍吗?不,你根本看不出它更快。具有100次读取的查询可能会消耗10秒的CPU,而另一个查询可能几乎不使用CPU。或者100次读取可能是物理的,而1000次读取可能是缓存的(这意味着它们几乎是免费的)。IO数字对性能的影响很小。不,我真的不认为这些数字慢10倍等等,所以读/写不会以任何方式影响CPU时间或性能?如果你想知道CPU时间,请查看CPU时间值。或者在挂钟时间过去的时候<代码>设置统计时间打开提供的信息类似于
CPU时间=0毫秒,运行时间=106毫秒。
。我通常在SSMS中打开客户端统计信息,并查看挂钟时间。