场景:
对于同一个表上的两个不同查询(没有索引/没有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提供的解释计划,因此对未来的增强有益。
答案 0 :(得分:3)
你说你的桌子上没有索引。因此,优化器别无选择,只能进行全扫描。此外,您正在选择所有列(select *
)。 query2(主要是全扫描的IO)的成本非常非常相似,可能是附加条件的额外CPU。基数是优化程序估计将由查询计划的每个步骤检索的行数。类似地,字节数是预期的字节数。如果query1和query2返回的行数相同,即额外谓词不影响结果,则query1的基数和字节数与query2的相同。如果您认为它们应该是不同的,那么您应该检查您的表统计信息是否是最新的。