2011-05-28 80 views
1

我得到了一個很多行的表,目前沒有字段是唯一的。我有一個userid字段和一個gameid字段,還有一些其他行存儲用戶玩過的遊戲信息。當用戶玩遊戲時,分數會被更新,所以在這張桌子上有很多更新查詢發生,並且它開始變得非常大。在這種情況下,桌上的索引是否有利?

難道是有益的增加另一場多數民衆贊成一個索引,然後存儲一個字符串,如userid_gameid那麼這將意味着更新了,如果我做我的更新查詢表中的快,故其中index = 10_10(例如)

謝謝

+0

的表與開始變得相當大的幾行?混亂! – 2011-05-28 17:55:05

+0

哎呀,現在修復了,但是是很多行。 – Jack 2011-05-28 17:56:54

回答

4

不要爲userid + gameid添加noddy字段,而應創建一個索引包含兩列。如果兩列合在一起是唯一的,那麼將它作爲表格的主鍵。

CREATE INDEX myIndex ON myTable (userid, gameid)

+0

哦,對,我沒有意識到這是可能的,但現在我明白了!那麼這是否意味着如果我爲兩個索引創建索引,那麼我的更新查詢應該更快? – Jack 2011-05-28 17:57:49

+0

_Much_更快傑克 - 您的更新將從每次讀取整個表格開始,直到只需執行簡單的查找。 – 2011-05-28 17:59:31

+0

@Jack,沒有太多的更新(寫入數據庫中的數據)作爲查找速度。數據庫引擎需要更少的時間來找到要更新的行,所以事情會更快。如果速度更快意味着可以將時間從幾分鐘縮短到幾分之一秒。 – rid 2011-05-28 17:59:40