我有一個相對較大的表(~100m記錄),它基本上是一個XML存儲。可以有多個具有不同時間戳的XML文檔(使用最新時間戳=最新版本的邏輯)。我們期待每月批量的更新數據,可能會使用約70%數據的新版本。我們正在計劃只保留商店中最新的2-3個版本,所以我猜測我們當前的B樹索引(記錄ID,時間戳)不一定是最快的?一個直接的「選擇*從表中的時間戳」= YYYY-MM-DD順序記錄ID,時間戳「查詢需要15小時才能完成昨晚 - 相當高規格的工具包,我不認爲其他人正在使用DB當時。Oracle複合鍵自動遞增(減量!?)
(re:查詢本身,理想情況下,我只想選擇時間戳大於或等於yyyy-mm-dd的最新文檔,但目前這不是問題)。
有什麼辦法,我可以創建一個自動遞減列如下:
Record ID Timestamp Version XML
1 2011-10-18 1 <...>
1 2011-10-11 2 <...>
1 2011-10-04 3 <...>
2 2011-10-18 1 <...>
2 2011-10-11 2 <...>
等等等等 - 即作爲一個新的版本出現時,最近的時間戳= 1版,和所有舊的記錄得到版本=版本+ 1.這樣我的管家腳本可以是一個簡單的「刪除版本> 3」(或者我們決定保留的任何東西),並且我可以在記錄ID上有一個B樹索引,並在版本上的二進制索引?
希望我沒有完全找錯了樹 - 已經「創造性谷歌搜索」整個上午,這是理論,我拿出...
每個月的批次可以達到約7000萬行。但每日批次約達250萬行。如果甚至有可能獲得每日批次,那可能值得考慮。 –
不可能 - 這是一個源頭驅動的決定。但它有其好處 - 這意味着這些表格幾乎每天都有空閒,數據被插入到這些表格中,每個月有一天,最新數據被提取並傳遞到前端系統。因此,插入/更新沒有(實際)時間限制,但選擇(和後續處理)有一個〜72小時的窗口,其中選擇當前需要15個小時... – Andy