确定MySQL性能最佳表结构

4
我正在为我的网站开发一个基于浏览器的RPG游戏,现在我正在尝试确定最佳的SQL表组织方式以提高性能和可维护性。
我的问题是:
SQL表中的列数是否会影响其查询速度?
当涉及到PHP或MySQL时,我不是新手。我过去开发程序的共同目标是让它们工作,但是最近我已经进入了一个阶段:除非程序快速且可靠,否则它的功能不够好。
无论如何,现在我有一个名为“members”的表,包含大约15个列的信息,例如玩家的用户名、密码、电子邮件、登录次数、页面浏览量等等。然而,它不包含任何关于玩家在游戏中的进度信息。如果我添加了诸如军队规模、金币、回合等列,那么它很容易增加到大约40或50个总列。
另外,我的数据库结构已经规范化。
一个有50个列且需要不断查询的表是否是个坏主意?我应该将其拆分为两个表:一个用于用户的常规信息,另一个用于用户的游戏统计数据吗?
我知道我可以自己检查查询时间,但我还没有创建表,我认为在这个对我的游戏来说重要的决定上获得一些专业建议会更好。
谢谢你的时间! :)
1个回答

5

如果你依赖于表扫描或缓存表数据页面,则列数可能会产生可衡量的成本。但是,获得良好性能的最佳方法是创建索引来帮助查询。如果您已经有了有利于查询的索引,则表中行的宽度基本上无关紧要。通过比扫描整个表快得多的方式查找特定行。

以下是一些资源:

根据您问题末尾的警告,您已经知道应该测量性能并仅修复有问题的代码。不要试图进行过早的优化。

很不幸,没有适用于定义索引的通用规则。最佳索引集需要根据您需要最快速度的查询进行定制设计。这是一项艰苦的工作,需要大量分析、测试和进行性能比较测量。它还需要大量阅读,以了解您所使用的RDBMS技术如何使用索引。


谢谢你提供给我这些资源。由于我几乎总是需要查询表格以查找用户的ID(这是主键),所以根据你的回复增加许多列对我来说不应该是问题。再次感谢,现在我可以继续我的开发了。 :) - Joe Majewski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接