我有一個產品列表{P1,P2,...},每個產品都可以有屬性列表{a1,a2,...}。找到不具有某些屬性的所有元素({a2,a6,a10})的最快算法是什麼?算法找不到集合中的元素
如果 P1 = {A1,A2,A3} P2 = {A3} P3 = {A1,A4} ,該算法應該返回{P2,P3}
的問題是我不」 t知道屬性的輸入列表是由用戶傳入的。產品及其相關屬性的列表存儲在數據庫中:
產品表(擁有超過10000行)
ProductID int,
ProductName varchar
屬性表(有大約400行,在未來可能會增長)
AttributeID int,
AttributeName varchar
Product_Attribute_Association表
ProductID int,
AttributeID int
查詢我的是:
SELECT p.ProductID, p.ProductName
FROM Product p
WHERE p.ProductID NOT IN
(SELECT pa.ProductID FROM Product_Attribute_Association pa
WHERE pa.AttributeID NOT IN (1, 4, 5) -- What ever being passed in
) t
這項服務將被打到相當困難,我想在一些數據結構緩存3個表中的數據在內存中寫入一個有效的算法做查找。你能建議一些我應該看看的東西嗎?謝謝
編輯: 更新數據庫不是問題。緩存將每小時從數據庫重建,因此建立緩存的時間不再是問題。
內存也不是一個問題。
更新數據庫不是問題。緩存將每小時更新一次,因此構建緩存的時間不再是問題。 – David 2010-10-06 16:19:53