gpt4 book ai didi

sql - Oracle WHERE 子句( AND 、 OR 运算符)

转载 作者:行者123 更新时间:2023-12-05 01:28:20 24 4
gpt4 key购买 nike

friend 们
在 Oracle SQL 中执行 where 子句时假设我有

UPDATE schema1.TBL_SCHEMA1_PROCESS_FEED F
SET F.TBL_SCHEMA1_PROCESS_LINE_ID = V_LINE_ID,
F.TBL_SCHEMA1_PROCESS_LINE_TYPE_ID = V_LINE_TYPE_ID,
F.TBL_SCHEMA1_PROCESS_LINE_SUB_TYPE_ID = V_SUB_TYPE_ID,
WHERE F.CURR_DATE = V_CURR_DATE
AND F.NEXT_DATE = V_NEXT_BUSINESS_DATE OR F.NEXT_DATE IS NULL;

如何针对条件优化此代码
F.NEXT_DATE = V_NEXT_BUSINESS_DATE OR F.NEXT_DATE IS NULL

最佳答案

那是你的真实身份where条款?你的意思是:

WHERE F.CURR_DATE = V_CURR_DATE  
AND ( F.NEXT_DATE = V_NEXT_BUSINESS_DATE
OR F.NEXT_DATE IS NULL )

如果是这样,那么您需要一个索引,如果可能的话,在 curr_date 上是唯一的。 .

如果您不满意这在执行时间上提供了足够大的改进,那么考虑将其扩展到 curr_date, next_date .如果不需要,请不要创建更大的索引。

你也可以考虑稍微改变你的条件,尽管我怀疑它会产生很大的不同,如果有的话。
WHERE F.CURR_DATE = V_CURR_DATE  
AND NVL(F.NEXT_DATE, V_NEXT_BUSINESS_DATE) = V_NEXT_BUSINESS_DATE

最好的选择是使用 rowid 更新.如果没有更多信息,就不可能知道您是否处于可能发生的情况,但作为 rowid是表中的唯一地址,更新单行时它总是比索引快。如果您要从此表中收集数据,然后在写回表之前填充变量,那么这是可能的。

那些是您的实际模式和表名...如果是,那么为什么不考虑选择更具描述性的内容呢?

关于sql - Oracle WHERE 子句( AND 、 OR 运算符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10461584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com