首页 > 解决方案 > Oracle 分区建议

问题描述

由于被 Corona 锁定,我无法轻松接触到知识渊博的同事,所以我希望在这里能得到一些可能的建议。

我们对具有大量(1-200)列的一些统计实体进行季度和年度“冻结”。然后,每个人都使用这些“冻结”版本作为丹麦所有统计数据发布的共同基础。目前,我们只是为每个版本创建一个新表。需要测试我们是否可以将这几百个表合并为 26 个基于实体的表,从而使针对它们的编程更容易,同时又不会过多地损害性能。

“冻结”大约有 100 万行,包括:年份 + 期间 + 类型 + 版本。例如:

2018_21_P_V1 = 2018 年第一季度版本 1 的初步数据

2019_41_F_V2 = 2019 年度版本 2 的最终数据

我在分区的世界中根本不是很有经验。我最初的想法是在 Year + Period 上进行分区,在 Type + Version 上进行 Subpartiton,但我不再确定这是正确的方法,我也不清楚哪种分区类型能最好地解决问题。

我希望有人可以推荐一种方法,因为它可以极大地帮助我并节省我大量时间“蛮力”测试很多不同的组合。

标签: oracleplsql

解决方案


根据您解释的当前情况,我强烈建议“使用分区”。毫无疑问。它非常有效且易于使用。您可以阅读有关分区的 Oracle 文档或在 Web 上搜索以了解如何开始。通常,当您对表进行分区时,Oracle 将每个分区视为单独的表,因此不必担心获取数据的速度。最重要的一步是选择最佳字段来建立分区。我每天使用数字或 int 数据类型的日期格式 (20190506)。或 (201907) 按月计算。你应该设计和测试它。接下来是决定子分区。在某些情况下,你真的不需要一个。这取决于您的数据结构和您对数据的期望。你想对数据做什么?哪些领域更重要?(用于 where 子句,...)然后为每个分区创建一些索引。很重要。另一个重要的一点是,使用分区可能会使您在 pl/sql 中编码的方式发生一些变化。例如,您不能在单个查询中同时使用 2 个或更多分区。您应该从不同的分区中一一选择和获取数据。不用担心 100 万条记录。我对比这更大的表使用了分区,它工作正常。祝你好运 您应该从不同的分区中一一选择和获取数据。不用担心 100 万条记录。我对比这更大的表使用了分区,它工作正常。祝你好运 您应该从不同的分区中一一选择和获取数据。不用担心 100 万条记录。我对比这更大的表使用了分区,它工作正常。祝你好运


推荐阅读