如何计算查询时间

时间:2012-08-21 18:48:18

标签: sql oracle sql-execution-plan

我有很长的SQL command,其中有很多JOINUNION个陈述。

我打开了Explain Plan Window,但我无法说出CostCardinalityBytes是什么意思。

有人可以解释这些条款吗?降低必然意味着更快query时间吗?

3 个答案:

答案 0 :(得分:1)

费用是由基于成本的查询优化工具完成的估算,用于选择适当的执行计划; 通常,较低的费用与较快的查询时间相关联,但并非总是如此。

基数是查询返回的预期行数,具体取决于数据库统计信息。再次,这只是一个估计。

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

参考文献:

答案 1 :(得分:1)

正如我在oracle Documentation

中看到的那样
  

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

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