我有我的應用程序的oracle後端。架構的設計使我可以將用戶事務拆分爲12個月度事務處理表,每個月處理一個事務處理表。現在,我想要檢索在給定日期範圍內訪問最多不同文檔的前10位用戶。
我目前有一個查詢,它對每個用戶的文檔進行countDistinct,按這個計數的降序排序並從中選擇前10個結果。
我在每個表上運行此查詢,並將所有結果附加到列表中。我必須掃描這個列表,然後每月統計一次,然後按user_id進行分組,以獲得所有12個月中每個用戶的文檔總計。
我意識到這個計數不是正確的計數,因爲可能有同一用戶在不同的月份訪問過相同的文檔。用我目前的邏輯,這些數字會加起來。
問題與多個表中的前10個不同值
我需要知道應該使用哪種策略,以便結果最準確..我知道一種方法是從單個表格進行查詢,這肯定會給我正確的答案,但是我可以實現這一點查詢全部12個表格?
這裏是一月
class TxnSummJan {
Long id
Transaction trans
Users grauser
Resources graresource
Integer transactioncount
Date lastaccesseddate
Date currentdate
String accountid
String userlocation
String documentname
String eventdesc
}
類似表格每個月..
如果我正確理解OP,不會有重複,因爲不同的表代表事務集合的不相交子集。所以你應該使用'UNION ALL'而不是'UNION',這樣數據庫不會浪費時間檢查重複項。 –
這樣一個關於「爲用戶選擇不同文檔名稱組,在日期之間選擇12個表」的聯合,創建視圖然後再按用戶計數(文檔名稱)組? –
@pri_dev你需要創建一個如上所述的視圖,然後只做一個「選擇不同的文檔...」。 @大衛華萊士同意,性能問題在這裏是一個問題。 – cctan