4

我有SQL command很多JOINUNION声明。

我打开了Explain Plan Window,但我不知道是什么CostCardinality或者是什么Bytes意思。

有人可以解释这些条款吗?更低是否一定意味着更快的query时间?

4

3 回答 3

1

成本是基于成本的查询优化器为选择适当的执行计划所做的估计;通常,较低的成本与更快的查询时间相关联,但并非总是如此。

基数是查询返回的预期行数,基于数据库统计信息。同样,这只是一个估计。

Bytes是数据库在执行查询时期望读取的字节数。

参考:

于 2012-08-21T19:03:56.347 回答
1

正如我在oracle 文档中看到的那样

CARDINALITY:通过基于成本的方法估计操作访问的行数。

BYTES:通过基于成本的方法估计操作访问的字节数。

COST:优化器基于成本的方法估计的操作成本。对于使用基于规则的方法的语句,此列为空。未确定表访问操作的成本。此列的值没有任何特定的计量单位;它只是一个用于比较执行计划成本的加权值。此列的值是 CPU_COST 和 IO_COST 列的函数。

所以,你还需要知道:

*CPU_COST:* 优化器基于成本的方法估计的操作的 CPU 成本。对于使用基于规则的方法的语句,此列为空。此列的值与操作所需的机器周期数成正比。

*IO_COST:* 优化器基于成本的方法估计的操作的 I/O 成本。对于使用基于规则的方法的语句,此列为空。该列的值与操作读取的数据块数成正比。

于 2012-08-21T19:04:23.090 回答
0

您需要知道,Explain Plan 为您提供了数据库认为它将使用的计划,但实际使用的计划可能会有所不同。

如果您要优化查询,或将其与其他查询进行基准测试(以选择最佳查询),测量执行时间、等待、重做大小和逻辑 I/O 是不错的起点。我不会过分依赖解释计划。

看一下:

http://www.orafaq.com/wiki/SQL_Trace

和:

http://www.orafaq.com/wiki/TKProf

于 2012-08-21T22:18:38.767 回答