oracle nls_comp,使用NLS_COMP=语言进行Oracle分区修剪

甲骨文10g。

我们有一个由varchar2列划分的大表(如果由我来决定,它不会是这个列,但它是)每个分区都有一个值。Ext分区“PARTISO1”值(“C”)。

我们还有语言方面的。

分区修剪在指示该列中的值时不起作用。

SELECT * from table1 where column_partitioned_by = 'C'

它对所有分区(而不仅仅是相关分区)执行完整的表扫描。

根据文件

here

,“NLS_COMP参数不影响分区表的比较行为。”

如果我发布:

ALTER SESSION SET NLS_COMP = BINARY

然后:

从表1中选择*其中列分区为'C'

它确实正确地修剪了分区。(我是在删减/而不是删减生成的计划)

除了在from子句中硬编码分区名之外,还有什么可以在这里工作的吗?

此外,更改分区定义也是不可能的。我在我的团队中是少数,因为我甚至认为这是一个问题。在我到达那里之前,前一个团队决定通过字符串find and replace发送所有应用程序sql查询来“解决”这个问题,该字符串在FROM子句中添加硬编码的分区名,并且有人根据需要手动更新存储过程中的分区名……但总有一天会中断,而且会很难解决。我正试图找到一种侵入性最小的方法,但恐怕没有。

最好的解决方案是只更改查询本身,而不更改底层数据库结构。就像我说的,这个解决方案可能根本不存在…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值