我们正在使用多个表来按月保留实体的数据。意思是,我们将表名命名为xx01,xx02 ... xx12。除名称外,所有这些表的表定义均相同。我们这样做是为了当我们认为它很旧时可以放下桌子。例如:在12月放2月表。放表实际上是免费的。 我的问题是,我可以创建一个可以从任何这些表中读取的视图吗? 该视图应该能够从任何这些表中获取数据,可能从多个表中获取数据进行范围查询。 DB:Oracle 12c。 PS:我们无法在月份上进行列和分区,因为我们必须基于其他列进行分区和细分以提高读取性能。
答案 0 :(得分:1)
我认为可能有一种更好的方法,它可以在Oracle上运行:您应该只拥有一个表xx,其中包含月份(或月份/年)的列-但应使其成为该月的分区表(或月/年)列。
Oracle要做的是为分区列的每个值创建一个单独的存储区,如果您的查询中包含一个值(或范围),它将足够聪明,仅查看适当的存储区。该分区列。
如果您曾经决定不想再保留某个特定的月份(或月份/年份),则可以告诉Oracle删除该分区,同时保留表的其余部分。