Oracle 成本更低的查询运行时间更长
我有一个奇怪的情况。我有两个问题,唯一的区别是- 一个查询有CREATION_DATE>SYSDATE-4,另一个查询有 创建日期<系统日期-4 “CREATION_DATE>SYSDATE-4”查询的执行和提供输出比“CREATION_DATEOracle 成本更低的查询运行时间更长,oracle,oracle11g,oracle10g,oracle-sqldeveloper,Oracle,Oracle11g,Oracle10g,Oracle Sqldeveloper,我有一个奇怪的情况。我有两个问题,唯一的区别是- 一个查询有CREATION_DATE>SYSDATE-4,另一个查询有 创建日期SYSDATE-4”查询的执行和提供输出比“CREATION_DATE
- 两个查询的成本相同
- 运行时间较长的查询比运行时间较短的查询具有更少的基数和字节
您确定估计基数是实际基数吗?你的统计数据可能已经过时了。对于每个查询,select count(*)的结果是什么?还可以尝试通过sqlplusTry中的autotrace查看实际执行计划,以使用“收集计划”\u统计计划a查看查询的实际处理方式。有时Oracle也没有充分考虑一些索引功能。例如,多列索引有“太多”列,索引范围扫描必须遍历太多页面。使用“set autotrace traceonly explain stat”执行两个查询,然后比较“物理读取”和“一致获取”的数量。“一致获取”显示查询执行总共处理了多少页。(PS:您使用的是哪个应用程序?)我想提一件事——我正在使用plsql developer(allaround automation)来运行查询。我将根据工具获取并显示初始数据集所需的时间报告上述内容。它是否真实地指示了执行查询所花费的时间?我希望我没有做错任何事情。“创建日期<系统日期-4”的count()是1559919,“创建日期>系统日期-4”的count()是0