我有SQL command很多JOIN和UNION声明。
我打开了Explain Plan Window,但我不知道是什么Cost,Cardinality或者是什么Bytes意思。
有人可以解释这些条款吗?更低是否一定意味着更快的query时间?
我有SQL command很多JOIN和UNION声明。
我打开了Explain Plan Window,但我不知道是什么Cost,Cardinality或者是什么Bytes意思。
有人可以解释这些条款吗?更低是否一定意味着更快的query时间?
正如我在oracle 文档中看到的那样
CARDINALITY:通过基于成本的方法估计操作访问的行数。
BYTES:通过基于成本的方法估计操作访问的字节数。
COST:优化器基于成本的方法估计的操作成本。对于使用基于规则的方法的语句,此列为空。未确定表访问操作的成本。此列的值没有任何特定的计量单位;它只是一个用于比较执行计划成本的加权值。此列的值是 CPU_COST 和 IO_COST 列的函数。
所以,你还需要知道:
*CPU_COST:* 优化器基于成本的方法估计的操作的 CPU 成本。对于使用基于规则的方法的语句,此列为空。此列的值与操作所需的机器周期数成正比。
*IO_COST:* 优化器基于成本的方法估计的操作的 I/O 成本。对于使用基于规则的方法的语句,此列为空。该列的值与操作读取的数据块数成正比。
您需要知道,Explain Plan 为您提供了数据库认为它将使用的计划,但实际使用的计划可能会有所不同。
如果您要优化查询,或将其与其他查询进行基准测试(以选择最佳查询),测量执行时间、等待、重做大小和逻辑 I/O 是不错的起点。我不会过分依赖解释计划。
看一下:
http://www.orafaq.com/wiki/SQL_Trace
和: