請原諒我的英語。 我有兩個表,都是按日期間隔分區,但在不同的領域。 兩個表中都有大量的記錄(每個分區〜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