在Oracle中对分区表使用本地索引是否有优势?

在Oracle中对分区表使用本地索引是否有优势?,oracle,indexing,partitioning,Oracle,Indexing,Partitioning,我假设在这种情况下答案是“不”,但我想我应该问一下,看看我是否遗漏了什么: 我有一个Oracle表,它被分区以便于数据加载——数据被加载到六个单独的表中,然后分区切换到主表中。区别这些加载表的唯一地方是数据源,因此每个加载表都有一个唯一的datasource列,用于划分主表。我们偶尔会有一些特别的查询查看主表中的这个数据源,但是查询这个表的标准报告完全忽略了这个列。无需插入/更新/删除此表中的单个记录,因此不必担心更新任何索引 在这种情况下,是否有任何理由使用本地索引而不是全局索引?如果出于性能

我假设在这种情况下答案是“不”,但我想我应该问一下,看看我是否遗漏了什么:

我有一个Oracle表,它被分区以便于数据加载——数据被加载到六个单独的表中,然后分区切换到主表中。区别这些加载表的唯一地方是数据源,因此每个加载表都有一个唯一的datasource列,用于划分主表。我们偶尔会有一些特别的查询查看主表中的这个数据源,但是查询这个表的标准报告完全忽略了这个列。无需插入/更新/删除此表中的单个记录,因此不必担心更新任何索引


在这种情况下,是否有任何理由使用本地索引而不是全局索引?

如果出于性能原因使用分区,则本地索引很有意义

如果您的查询始终包含分区键,那么Oracle将只扫描该特定分区(称为“分区修剪”)

如果您有额外的条件可以从索引查找中受益,那么数据库只需要检查比全局索引小得多的本地索引,这样查找就会更快


在您的情况下,如果您从未(或几乎从未)在查询中包含分区键,那么本地索引没有帮助是正确的。

如果您出于性能原因使用分区,则本地索引很有意义

如果您的查询始终包含分区键,那么Oracle将只扫描该特定分区(称为“分区修剪”)

如果您有额外的条件可以从索引查找中受益,那么数据库只需要检查比全局索引小得多的本地索引,这样查找就会更快


在您的情况下,如果您从未(或几乎从未)在查询中包含分区键,那么本地索引将不会有任何帮助,这是正确的。

如果有许多分区,性能会变得更差,因为Oracle必须像单独索引一样处理每个分区。如果有许多分区,性能会变得更差,因为Oracle必须像单独索引一样处理每个分区。