【问题标题】:pl/sql : hitting a variable(different) partitions using query with different valuespl/sql :使用具有不同值的查询来访问变量(不同)分区
【发布时间】:2012-05-18 11:12:34
【问题描述】:

一个表包含 2 个分区 即 x,y

我们必须使用不是常量值的变量来查询表,并且必须根据这些变量从 x 或 y 分区中获取数据

如果 Var =1 我们必须点击 x 分区,如果 var=2 我们必须点击 y 分区

类似:

begin 
var :=&var

  delete  table partition(&var) where varaibles =some values

end;

我遇到了一个问题“非法分区使用”

我们可以通过替换值来动态命中分区

【问题讨论】:

  • 你想删除一个分区还是从中选择?

标签: sql oracle plsql


【解决方案1】:

如果要指定分区名称,则需要使用动态 SQL。

但是,您几乎不需要明确指定分区名称。假设您的 WHERE 子句包含对表分区的任何列的谓词,Oracle 将自动执行适当的分区修剪,以便它只需要命中数据所在的特定分区。

【讨论】:

  • @user1403174 - 但是,就像我说的,在查询中明确指定要命中的分区的名称几乎没有必要/不合适。在您的WHERE 子句中指定一个谓词以允许Oracle 确定需要扫描哪些分区几乎总是更合适的。
  • 如果表非常大......即使表具有范围分区并且我们正在使用分区列值访问表,我们是否可以访问分区
  • @user1403174 - 分区的全部意义在于它可以有效地访问一个非常大的表。您只需在表分区的任何列上指定一个谓词,Oracle 就会确定需要命中哪些分区。
猜你喜欢
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多