小编Nic*_*lás的帖子

使用where子句中的函数的Oracle性能

在存储过程(具有名为'paramDate'的日期参数)中,我有一个像这样的查询

select id, name
from customer
where period_aded = to_char(paramDate,'mm/yyyy')
Run Code Online (Sandbox Code Playgroud)

Oracle会将paramDate转换为每行的字符串吗?

我确信Oracle不会,但我被告知Oracle会.事实上,我认为如果函数的参数是约束(在查询中没有获得fierld或计算值),结果应该总是相同的,这就是Oracle应该只执行一次此转换的原因.然后我意识到我有时会在几个函数中执行DML语句,这可能会导致结果值发生变化,即使每行都没有变化.

这应该意味着我应该在将这些值添加到查询之前转换它们.

无论如何,也许好的"已知函数"(内置)会被评估一次,甚至我的函数也会被评估.

无论如何,再次......

oracle会执行一次to_char还是Oracle会为每一行执行该操作?

谢谢你的回答

sql oracle performance where-clause

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

oracle ×1

performance ×1

sql ×1

where-clause ×1