SQL解释计划解释 - Oracle DB

时间:2013-01-01 10:18:30

标签: sql oracle plsql sql-execution-plan

场景:

对于同一个表上的两个不同查询(没有索引/没有PK /没有FK),我得到了相同的解释计划(Tab Access Full和相同的Cost,Bytes和Cardinality数字)。

查询1:

select * from tab1 where col1 = 'A'

查询2:

select * 
from tab1 
where col1 = 'A' 
and months_between(decode(col2,NULL,col3,col4),col5)<13;

问题:

Query2 中添加的条件是否需要更长时间才能处理?

是这样的,即使 Query1 也花费时间作为 Query2 的时间,这是所需的最长时间几乎任何此类查询(表格)标签访问全部)?

请注意,该表(数据卷总是<0.5 mil)到目前为止没有显示任何性能问题,这只是为了代表oracle COB提供的解释计划,因此对未来的增强有益。

1 个答案:

答案 0 :(得分:3)

你说你的桌子上没有索引。因此,优化器别无选择,只能进行全扫描。此外,您正在选择所有列(select *)。 query2(主要是全扫描的IO)的成本非常非常相似,可能是附加条件的额外CPU。基数是优化程序估计将由查询计划的每个步骤检索的行数。类似地,字节数是预期的字节数。如果query1和query2返回的行数相同,即额外谓词不影响结果,则query1的基数和字节数与query2的相同。如果您认为它们应该是不同的,那么您应该检查您的表统计信息是否是最新的。