我有類似下面的數據模型:使查詢更高效的讀取
username | product1 | product2
-------------------------------
harold abc qrs
harold abc def
harold def abc
kim abc def
kim lmn qrs
...
username | friend_username
---------------------------
john harold
john kim
...
我想建立最頻繁的產品1至產品2的記錄有直方圖,僅限於給定的產品1號,並只限於約翰的朋友。因此,像:
做什麼約翰鏈接的朋友,爲產品1,當產品1 =「ABC」: 從朋友表中選擇所有的約翰的朋友。對於每一個朋友,計數和組的記錄,其中產品1 =「ABC」,排序結果在遞減順序編號:
Results:
abc -> def (2 instances)
abc -> qrs (1 instance)
我知道我們可以做到在關係數據庫中的以下,但會有一些這種查詢將開始利用大量資源的閾值。用戶可能擁有大量的朋友記錄(500+)。如果每次用戶加載頁面時該查詢運行5次,我擔心我會很快耗盡資源。
是否有一些其他表可以引入到我的模型中,以減輕每次用戶希望看到直方圖故障時執行上述查詢的開銷?我所能想到的是在可能的情況下預先計算直方圖,以便讀取優化。
感謝您的任何想法
嗨,是的,我想展示一個頁面,例如5個產品。然後,需要爲每個產品運行一次上述查詢,以找出每個產品的直方圖。同意這些數據不需要*真的*新鮮。真的想知道我是否錯過了一些優化查詢的明顯策略。最後,我不認爲你必須檢查N個朋友對M product1記錄並將它們分組以建立直方圖。所以我們需要策略來防止這樣的查詢運行或者首先減少查詢。 – user291701 2010-08-09 02:36:52
@ user291701:我更新了答案,包括如何一次查詢5種產品。我將'product1'添加到輸出中,以便知道'product2'值和計數與'product1'值相關聯。 – 2010-08-09 02:54:08
謝謝你的幫助。 – user291701 2010-08-09 14:15:42