2010-07-25 69 views
1

有關查詢/數據庫性能問題:運行查詢多次VS使用Cookie

我有記錄多少個「點」的用戶已經賺了表。每1點有1行。當有人獲得20分時,將20行插入到數據庫中。當有人失去20分時,我會在數據庫中添加一個值爲「-1」的行。因此,可以通過執行將這些點相加在一起的簡單SELECT查詢來計算某人擁有的點數。

潛在地,每個單獨的用戶可能有成千上萬行來指示增加/丟失的點數,而我的數據庫可能有成千上萬的用戶。

我需要在網站的「每個」頁面上顯示點數(針對登錄的一個用戶)。

問題是:在每次頁面加載時執行此SELECT查詢會損害數​​據庫性能,還是運行查詢一次,將值存儲在Cookie中,並將Cookie顯示在頁面上更有效?我預測的唯一風險是,如果用戶的瀏覽器不支持Cookies,並且Cookie始終更新爲顯示正確的值。

回答

0

每個頁面加載的單個查詢不會做太多,但是是一個cookie更高效,雖然不安全。您應該使用會話,以便用戶不能更改數據。

1

這是一個相當便宜的操作。如果你有成千上萬的用戶在(userid,point)上有一個聚集索引,你可以加快查找速度。

雖然這是一個相當便宜的操作,但仍需要一些時間來執行額外的查詢。如果你期望流量很高,另一種方法是將當前點存儲在用戶名旁邊的列中的用戶表中。我假設你爲每個頁面獲取用戶名,那麼你幾乎可以得到當前點自由。

可以保留點表以供參考,並獲得關於爲什麼以及何時獲得積分的詳細信息。