0

设想:

对于同一张表上的两个不同查询(未编入索引/无 PK / 无 FK),我得到了相同的解释计划(选项卡访问完整和成本、字节和基数的相同数字)。

查询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一样花费时间,这是表上几乎所有此类查询 所需的最长时间(Tab Access Full)?

请注意,该表(数据量始终小于 0.5 万)目前没有显示任何性能问题,这只是为了解释 oracle COB 提供的解释计划,以便对未来的改进有所帮助。

4

1 回答 1

3

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

于 2013-01-01T10:39:28.773 回答