Oracle 在大型表上使用索引的最佳方法

Oracle 在大型表上使用索引的最佳方法,oracle,oracle11g,oracle10g,Oracle,Oracle11g,Oracle10g,我有一张大约有4-4.5亿张唱片的桌子。每天大约有400万个插页。该表包含6个外键(事实表数据仓库) 现在我正在考虑使用位图连接索引。但是从我读到的来看,插入的速度会非常慢 该表将经常被查询。您知道索引策略可能是什么样子吗?如果您不为特定列编制索引,那么在每次对其放置谓词时,除了对其进行完整表(或分区)扫描外,您别无选择。随着时间的推移,这可能比维护索引的开销要大得多 存在位图联接索引时的插入将需要根据维度表进行查找,但这对于大型维度表来说可能效率低下。您可以考虑仅使用位图连接索引作为连接到较小

我有一张大约有4-4.5亿张唱片的桌子。每天大约有400万个插页。该表包含6个外键(事实表数据仓库)

现在我正在考虑使用位图连接索引。但是从我读到的来看,插入的速度会非常慢


该表将经常被查询。您知道索引策略可能是什么样子吗?

如果您不为特定列编制索引,那么在每次对其放置谓词时,除了对其进行完整表(或分区)扫描外,您别无选择。随着时间的推移,这可能比维护索引的开销要大得多

存在位图联接索引时的插入将需要根据维度表进行查找,但这对于大型维度表来说可能效率低下。您可以考虑仅使用位图连接索引作为连接到较小表的列作为第一步。

索引的另一种方法是对表进行分区,这也有助于提高针对超大维度表的连接效率

我的默认方法是:

  • 分区,通过分区修剪提高查询性能
  • 针对大维度表的联接效率子分区
  • 应用位图索引以提高查询性能,而分区修剪则无济于事

如果不为特定列编制索引,则在每次对其放置谓词时,除了进行完整表(或分区)扫描外,别无选择。随着时间的推移,这可能比维护索引的开销要大得多

存在位图联接索引时的插入将需要根据维度表进行查找,但这对于大型维度表来说可能效率低下。您可以考虑仅使用位图连接索引作为连接到较小表的列作为第一步。

索引的另一种方法是对表进行分区,这也有助于提高针对超大维度表的连接效率

我的默认方法是:

  • 分区,通过分区修剪提高查询性能
  • 针对大维度表的联接效率子分区
  • 应用位图索引以提高查询性能,而分区修剪则无济于事

如果不为特定列编制索引,则在每次对其放置谓词时,除了进行完整表(或分区)扫描外,别无选择。随着时间的推移,这可能比维护索引的开销要大得多

存在位图联接索引时的插入将需要根据维度表进行查找,但这对于大型维度表来说可能效率低下。您可以考虑仅使用位图连接索引作为连接到较小表的列作为第一步。

索引的另一种方法是对表进行分区,这也有助于提高针对超大维度表的连接效率

我的默认方法是:

  • 分区,通过分区修剪提高查询性能
  • 针对大维度表的联接效率子分区
  • 应用位图索引以提高查询性能,而分区修剪则无济于事

如果不为特定列编制索引,则在每次对其放置谓词时,除了进行完整表(或分区)扫描外,别无选择。随着时间的推移,这可能比维护索引的开销要大得多

存在位图联接索引时的插入将需要根据维度表进行查找,但这对于大型维度表来说可能效率低下。您可以考虑仅使用位图连接索引作为连接到较小表的列作为第一步。

索引的另一种方法是对表进行分区,这也有助于提高针对超大维度表的连接效率

我的默认方法是:

  • 分区,通过分区修剪提高查询性能
  • 针对大维度表的联接效率子分区
  • 应用位图索引以提高查询性能,而分区修剪则无济于事

您可能已经到了外键太贵的地步,现在是时候扔掉它们了……也就是易趣。然后,您将需要运行一些作业来检查是否存在违规行为。

您可能会遇到外键太贵的问题,现在可能是删除外键的时候了……也就是易趣。然后,您将需要运行一些作业来检查是否存在违规行为。

您可能会遇到外键太贵的问题,现在可能是删除外键的时候了……也就是易趣。然后,您将需要运行一些作业来检查是否存在违规行为。

您可能会遇到外键太贵的问题,现在可能是删除外键的时候了……也就是易趣。然后,您需要运行一些作业来检查违规情况。

事实表确实已经分区(每天)。似乎我必须一步一步地尝试你的用户正在运行什么类型的查询。它们是按分区还是跨多个分区?更重要的是,通过位图连接索引或更快的查询响应来实现插入操作?事实表确实已经(每天)进行了分区。似乎我必须一步一步地尝试你的用户正在运行什么类型的查询。它们是按分区还是跨多个分区?更重要的是,通过位图连接索引或更快的查询响应来实现插入操作?事实表确实已经(每天)进行了分区。似乎我必须一步一步地尝试你的用户正在运行什么类型的查询。它们是按分区还是跨多个分区?更重要的是,通过位图连接索引或更快的查询响应来命中插入?事实表是