您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

甲骨文。防止合并子查询和主查询条件

甲骨文。防止合并子查询和主查询条件

ROWNUM是防止优化程序转换并确保类型安全的最安全方法。使用ROWNUMOracle使行认为行顺序很重要,并防止谓词推送和视图合并。

select *
from
(
   select id, value, rownum --Add ROWNUM for type safety.
   from eav
   where attr like 'sal%' 
)
where to_number(value) > 5000;

还有其他方法可以做到这一点,但是没有一个是可靠的。不要为简单的内联视图,通用表表达式CASE,谓词顺序或提示而烦恼。这些常用方法并不可靠,我已经看到它们都失败了。

最佳的长期解决方案是将EAV表更改为每种类型都具有不同的列,如我在此答案中所述。立即解决此问题,否则将来的开发人员在不得不编写复杂的查询以避免类型错误时将诅咒您的名字。

其他 2022/1/1 18:49:07 有470人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶