【问题标题】:Would an index on a table be beneficial in this case?在这种情况下,表上的索引是否有益?
【发布时间】:2011-09-04 00:55:58
【问题描述】:

我有一个包含很多行的表,目前没有唯一的字段。我有一个 userid 字段和一个 gameid 字段以及其他一些存储用户玩过的游戏信息的行。当用户玩游戏时,分数会更新,因此该表上发生了相当多的更新查询,并且开始变得相当大。

添加另一个作为索引的字段然后存储诸如 userid_gameid 之类的字符串是否有益,这意味着如果我执行更新查询,那么表中的更新速度会更快,因此 index=10_10(示例)

谢谢

【问题讨论】:

  • 有几行的表开始变得非常大?令人困惑!
  • 糟糕,现在修复了,但是有很多行。

标签: mysql database-design indexing


【解决方案1】:

不要为 userid + gameid 添加 noddy 字段,而是创建一个包含两列的索引。如果将两列放在一起是唯一的,则将其作为表的主键。

CREATE INDEX myIndex ON myTable (userid, gameid)

【讨论】:

  • 哦,对了,我没有意识到这是可能的,但现在我明白了!那么这是否意味着如果我为两个创建索引,我的更新查询应该更快?
  • 快得多 Jack - 您的更新将从每次必须读取整个表变为只需执行简单的查找。
  • @Jack,与其说是更新(在数据库中写入数据)不如说是查找速度。数据库引擎将花费更少的时间来查找要更新的行,因此事情会更快。更快意味着它可以将时间从几分钟缩短到几分之一秒。
  • 刚刚试过,效果很好!我会在允许的时候接受。
  • @Jack - 不错,不要忽视你的索引和主键/外键——它们会带来好处!享受吧!
猜你喜欢
  • 1970-01-01
  • 2014-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-31
  • 1970-01-01
  • 1970-01-01
  • 2023-01-07
相关资源
最近更新 更多