0
场景:SQL解释计划Intrepretation - Oracle数据库
我得到(对于成本,字节和基数选项卡访问完整和同号)两个不同的查询在同一个表(不一样的解释计划索引/无PK /无FK)。
查询1:
select * from tab1 where col1 = 'A'
QUERY2:
select *
from tab1
where col1 = 'A'
and months_between(decode(col2,NULL,col3,col4),col5)<13;
问:
不会QUERY2附加条件需要更多的时间来处理?
或
有类似之处,甚至查询1花费的时间为QUERY2,这是需要对表(表访问全文)几乎任何此类查询最大时间的?
请注意,表(数据卷总是< 0.5 mil)到目前为止没有显示任何性能问题,这只是为了解释oracle COB提供的解释计划,以便它对未来的增强有利。
您的回复很有道理。根据你的回答,我有两个问题 - 1.你说'微不足道的额外的CPU' - 即使它很小,它怎么能被测量?如果我的表将要有更多的行,并且查询具有相同的C-B-C解释计划,那么误导用户关于这两个查询上的被重新搜索的行将具有相同的性能,对吧?我想这不是这种情况。请解释。 2.也请解释你在上述答案中的基数是什么意思,因为我把它当作'不'。 '不同'行'。 – Lakshman
请忽略上述评论中的第二个问题。下面的堆栈溢出[链接](http://stackoverflow.com/questions/13838173/how-to-consider-explain-plan-as-good-oracle-10g?rq=1)帮助我的术语深入了解oracle的解释计划功能。 – Lakshman
在查询计划中可以看到使用的CPU数量(以每个查询步骤的总成本的百分比表示)。与IO的成本相比,这可能非常小或者四舍五入。如果您在选择列表中包含一些精心设计的计算,则可能会看到CPU%增加。 “基数”是query = row count = num rows,每一步的结果集的est大小。请记住,查询计划是一种估算,因此根据统计数字,数字将近似正确。如果您需要确切值,则需要跟踪查询并使用例如TKProf查看究竟发生了什么。 –