请原谅我的英语。 我有两个表,都是按日期间隔分区,但在不同的领域。 两个表中都有大量的记录(每个分区〜100kk)。 第一张表在快速分区表空间中保留最后3个(按日期)分区,其他分区分配在慢速分区表空间中。 另外我有一些系统,处理数据。它并行执行进程,每个通过select语句从第一个表中获取数据,并将处理后的数据放入第二个表中。 所以我需要从第一个表中选择数据只从“快速”(!)分区放到第二个表中。 但第二个表在其他(日期太)字段分区。当进程并行执行时,当不同的进程试图将数据放入第二个表中的同一分区时,会发生死锁。一次从多个分区中选择
好的解决方案是,每个进程仅从第2个表中的“快速”分区(但所有这些分区都在一次)获取数据。在这种情况下,每个进程将在一个分区中推送数据。但我不知道如何去做。
如果我让
select t.field1, t.field2 from (select * from FIRST_TABLE partition("P1") union all
select * from FIRST_TABLE partition("P2") union all
select * from FIRST_TABLE partition("P3")) t
where t.field3='someVal' --Indexed field in FIRST_TABLE
将OracleDB的使用本地索引分区上的FIRST_TABLE解决where子句?这种方式将如何影响性能?
任何想法来解决我的问题?
PS关于如何从一个select语句中的多个分区中选择数据有很多问题,但我没有找到适合我的情况的答案。
可能的重复[如何做一个SQL选择多个分区?](http://stackoverflow.com/questions/4268139/how-does-one-do-a-sql-select-over-multiple-分区) – javaPlease42