【问题标题】:Determining Best Table Structure for MySQL Performance确定 MySQL 性能的最佳表结构
【发布时间】:2011-02-17 11:29:49
【问题描述】:

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

这是我的问题:

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

我不是 PHP 或 MySQL 的新手。我过去开发东西的共同目标是让它们发挥作用,但我最近进入了一个功能性程序不够好的阶段,除非它快速可靠。

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

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

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

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

感谢您的宝贵时间! :)

【问题讨论】:

    标签: mysql performance database-design


    【解决方案1】:

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

    这里有一些资源供您参考:

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

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

    【讨论】:

    • 感谢您为我提供这些资源。由于我几乎总是会查询表以查找用户的 id(这是主键),因此根据您的响应,我拥有很多列应该没有问题。再次感谢,现在我可以继续我的开发了。 :)
    猜你喜欢
    • 2012-05-20
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多