2011-06-12 85 views
1

我得到當前用戶的所有喜歡,並將它們存儲到表(user_id,liked_id)。問題是,當我再次得到所有喜歡的東西,如果有變化,我只想插入新的喜歡。我怎麼能夠有效地做到這一點,因爲許多用戶有很多喜歡?用於存儲用戶的Facebook喜歡的數據庫設計

+0

您使用的是什麼數據庫服務器(品牌和版本)?請適當地重申您的問題以獲得更準確的答案。 – 2011-06-12 18:52:51

+0

謝謝。這是MySQL。 – celiker 2011-06-13 17:37:05

回答

1

使(user_id,liked_id)成爲表的集羣主鍵。使用索引的填充因子爲新對創造空間,並確保更新子句可以有效地使用聚集索引(即始終在where子句中包含user_id)。

+0

謝謝,但如果我想查找user_id喜歡的東西,它會運行緩慢嗎? – celiker 2011-06-13 17:38:50

+1

如果你在開始時進行查找,它將能夠使用索引,例如'user_id像'abc%''。如果您在字符串中的任何地方查找它,例如'user_id就像'%abc%''那樣,你需要一個很慢的全表掃描。 – 2011-06-13 17:53:16

0

是的,您可以製作複合/組合主鍵或將兩個字段組合爲唯一。 因此,它不會添加由於關鍵錯誤而已經存在的數據。因此只會插入新數據。

+0

這會導致整個陳述被回滾,從而丟失合法數據。 – 2011-06-12 19:39:08