我有一張表,我需要按類別進行約束,然後在某個日期範圍內查找所有重疊日期。這大約需要2秒,這對於大約每秒50次的每次交易都是不可接受的。另一種方法是創建一些統計表 - 然後再次,我不知道這是一個偉大的想法,因爲事情可能會失去同步。Oracle事務處理 - 計數表
Date on Rent # Rented Category
9/5/2011 5 CATEGORY1
在Oracle(PL/SQL,如果它事項),我怎麼能保持這樣的表現,但要確保併發事務不通過使比它少了一個或一個以上搞砸了遞增/遞減真的是?
我有兩種類型的交易,有點像搜索和租金。只有租金會更新這個計數表(並且只是從中讀取數據)。我不介意租金是否放緩,但不希望搜索性能受到影響。租金的發生頻率可以達到每秒5-10次。
你的問題有點困惑:你真的想要什麼?你真的用盡了改進原始查詢的策略嗎?你試過什麼了?數據庫的什麼版本?哪個版本?數據如下:表格中的總行數,類別數量,日期範圍的寬度? – APC
日期範圍可以長達6個月。大多數日期可能是5天,因爲有延遲收費。我使用10gR2。總行數約爲1200萬。當我刪除一些約束(其中我知道會導致問題並可以解決)時,我可以將查詢降低到1.7秒,但這仍然太慢。我需要它是0.02秒。查找重疊日期的約束類似於AND AND_date('07/05/2011 00:00:00','MM/DD/YYYY HH24:MI:SS')<= return_date AND to_date('07/18/2011 23:59:59','MM/DD/YYYY HH24:MI:SS')> = start_date'。 –
請注意,大多數這些行是歷史的,只需要查看當前和未來的行。 –