无法理解DBMS查询I / O成本计算

时间:2017-06-01 18:12:17

标签: sql database query-optimization

enter image description here

有人可以解释一下他们如何计算出两个查询中的总IO成本吗?

1 个答案:

答案 0 :(得分:0)

我会捅它。

I\O Cost来自您目前正在处理的任何行数。

计划A

select所有产品和所有供应商。这是你要做的7300行。但是这个示例也会join,这意味着每个供应商都会拥有所有产品,因此它select 300 * 7000 = 2100000。

然后,您必须对2100000行进行操作才能启动供应商代码过滤器。

然后,您必须对7000行进行操作才能启动状态过滤器,因为您之前已过滤到初始产品列表。

计划B : 有一个拼写错误,IN()没有右括号。

首先是您的IN,因为您的查询需要完成数据集。您知道您有300家供应商,因此您正在为300家供应商工作,将其过滤到10家。

然后select您的所有产品和所有佛罗里达供应商,以便您使用7010行,7000个产品,10个供应商(来自上一步),以便您可以执行{{1}这为每个供应商提供了7000种产品。

10 * 7000表示您现在正在使用70000行来执行join上的最终过滤。

总I / O成本是每个处理步骤的总和。

我希望这是有道理的。