Oracle 12c - 哪个索引应该用于包含分区和子分区的表

时间:2017-11-14 04:27:15

标签: sql oracle indexing partition

我在Oracle 12c中有一个500M记录表。 表按每1个varchar列进行分区,并按其他varchar列进行子分区。

在Where子句中使用这两列的查询应该使用哪些索引?

我假设本地分区索引是最佳选择,但希望更深入了解何时这是一个案例,最好如何创建它们?

1 个答案:

答案 0 :(得分:0)

Oracle能够partition pruning,这意味着如果您的查询在where子句中具有分区键列,则Oracle足够聪明,只能查询相关的分区。在这种情况下,local partitioned index更有益,因为它是分区的本地,即索引也以相同的方式分区,Oracle只会读取那些分区的相关索引条目。相关的。

但是,如果您的查询在where子句中没有分区键列,则Oracle无法应用分区修剪,除了扫描所有{{3}之外别无选择或者,最糟糕的情况是整个数据表。这是全局分区索引将在where子句中的那些列上派上用场的地方。在这种情况下,Oracle会在跨分区的那些列上创建索引,并确切地知道从哪些分区读取哪些记录符合该语句的where子句。