2011-05-28 49 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