小编Sea*_*yen的帖子

让 Oracle 优化器使用虚拟列来查找分区

我有一个包含三列的大表,如下所示:

"START_DATE" DATE,
"START_VALUE" NUMBER(10,7)
"START_DATE_VALUE" NUMBER(18,7) 
  GENERATED ALWAYS AS 
  (
    (extract(YEAR FROM START_DATE) * 10000 + 
     extract(MONTH FROM START_DATE)*100 + 
     extract(DAY FROM START_DATE))*power(10,3) + 
     (START_VALUE+180)
  ) VIRTUAL
Run Code Online (Sandbox Code Playgroud)

START_DATE_VALUE列是用于分区的虚拟列。但是,当我有这样的查询时:

select * 
from mytable
where
      start_date > to_date('02-01-2012', 'MM-DD-YYYY')
 and start_value > 120.23452
Run Code Online (Sandbox Code Playgroud)

它扫描所有分区以获取结果。如何让 Oracle 使用虚拟列,然后选择正确的分区来处理它?

抱歉,我的表定义非常大,我无法将其复制到此处。

oracle partitioning

6
推荐指数
1
解决办法
2288
查看次数

估计 Oracle 中剩余的空间

我有一个需要重新分区的大型 Oracle 表。我想知道有没有一种方法可以知道我有足够的空间来使用新分区创建此表的副本并将新分区与旧分区交换。

oracle

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

标签 统计

oracle ×2

partitioning ×1