我有很长的SQL command
,其中有很多JOIN
和UNION
个陈述。
我打开了Explain Plan Window
,但我无法说出Cost
,Cardinality
或Bytes
是什么意思。
有人可以解释这些条款吗?降低必然意味着更快query
时间吗?
答案 0 :(得分:1)
费用是由基于成本的查询优化工具完成的估算,用于选择适当的执行计划; 通常,较低的费用与较快的查询时间相关联,但并非总是如此。
基数是查询返回的预期行数,具体取决于数据库统计信息。再次,这只是一个估计。
字节是数据库在执行查询时期望读取的字节数。
答案 1 :(得分:1)
CARDINALITY:通过基于成本的行数方法估算 通过操作访问。
BYTES:通过基于成本的方法估算字节数 通过操作访问。
成本:优化程序基于成本估算的操作成本 做法。对于使用基于规则的方法的语句,请参见本专栏 一片空白。未确定表访问操作的成本。价值 该栏目没有任何特定的计量单位;它是 仅用于比较执行计划成本的加权值。该 此列的值是CPU_COST和IO_COST的函数 列。
所以,你还需要知道:
* CPU_COST:*由优化程序基于成本的方法估算的操作的CPU成本。对于使用基于规则的方法的语句, 此列为null。此列的值与 操作所需的机器周期数。
* IO_COST:*由优化程序基于成本的方法估算的操作的I / O成本。对于使用基于规则的方法的语句, 此列为null。此列的值与 操作读取的数据块数。
答案 2 :(得分:0)
您需要知道解释计划为您提供数据库认为将使用的计划,但实际使用的计划可能不同。
如果要优化查询,或者将其与其他查询进行基准测试(以选择最佳查询),则测量执行时间,等待,重做大小和逻辑i / o是开始的好地方。我不会太依赖解释计划。
看看:
http://www.orafaq.com/wiki/SQL_Trace
和