我正在为我的一个网站开发基于浏览器的 RPG,现在我正在尝试确定组织 SQL 表以提高性能和维护的最佳方式。

这是我的问题:

SQL 表的列数会影响查询速度吗?

说到 PHP 或 MySQL,我不是新手。我曾经以让它们工作的共同目标开发东西,但我最近进入了一个阶段,即功能程序不够好,除非它快速可靠。

无论如何,现在我有一个大约有 15 列的 members 表。它包含玩家的用户名、密码、电子邮件、登录信息、页面浏览量等信息。但是,它不包含有关玩家在游戏中的进度的任何信息。如果我为诸如军队规模、黄金、回合数等内容添加列,那么它很容易增加到大约 40 或 50 个总列。

哦,我的数据库结构已经标准化了。

一个包含 50 列且不断被查询的表是一个坏主意吗?我应该把它分成两张表吗?一个是用户的一般信息,一个是用户的游戏统计?

我知道我可以自己检查查询时间,但我实际上还没有创建表,我认为我最好为我的游戏的这个重要决定提供一些专业建议。

感谢您的时间! :)

最佳答案

如果您依赖表扫描或缓存表数据的页面,则列数可能具有可衡量的成本。但是获得良好性能的最佳方法是创建 索引 来协助您的查询。如果您有对查询有益的索引,那么表中行的宽度几乎无关紧要。您正在通过比扫描表格更快的方式查找特定行。

这里有一些资源供您使用:

  • EXPLAIN Demystified
  • More Mastering the Art of Indexing

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

    不幸的是,定义索引没有一刀切的规则。最好的索引集需要针对您需要最快的查询进行自定义设计。这是一项艰巨的工作,需要进行大量分析、测试和对性能进行比较测量。还需要大量阅读才能了解给定的 RDBMS 技术如何使用索引。

    关于mysql - 确定 MySQL 性能的最佳表结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2799565/

    10-12 21:19