改善以下oracle查询使其更有效

时间:2018-11-24 17:12:33

标签: oracle

我是sql查询的oracle世界的新手,但仍然需要如何从我已为其获取查询的两个表中获取数据,现在请告知以下查询是否正确或仍然可以进行效率更高,欢迎提出任何改进建议,以下是我的查询

1 个答案:

答案 0 :(得分:2)

进行比较时,不应将日期数据类型转换为字符。这有两个负面影响

  1. 您有效地“隐藏”了这些列的统计信息,这意味着 优化器可能无法最佳选择执行计划
  2. 如果列上有索引,则将阻止其使用。

如果您的CREATED_ONMODIFIED_ON列未存储时间部分,则谓词可以简单地

BC.CREATED_ON = trunc(SYSDATE)
 OR 
BC.MODIFIED_ON = trunc(SYSDATE)

如果您的列 do 中包含时间部分,则您应按如下所示制定谓词

BC.CREATED_ON >= trunc(sysdate) and BC.CREATED_ON < trunc(sysdate)+1
or
BC.MODIFIED_ON >= trunc(sysdate) and BC.MODIFIED_ON < trunc(sysdate)+1

您要尝试做的是避免将函数应用于问题中的TO_CHAR()