【问题标题】:Server Load: mySQL vs PHP Functions服务器负载:mySQL 与 PHP 函数
【发布时间】:2011-06-19 21:58:43
【问题描述】:

这是我的情况:

情况:

我有用户,每个用户都有多个类别中的多个值。

在我看来,我有两个选择:

我。创建一个新表“值”:

 user_ID   category   value 

  ...        ...       ...
   5          1        aaa
   5          1        bbb
   5          2        ccc
   5          2        ddd
   5          2        eee
   6          1        xxx
   6          2        yyy
   6          1        zzz

二。在我与用户的实际表中 - '用户':

user_ID (unique)         values  
        5             aaa,bbb$$ccc,ddd,eee
        6             xxx,zzz$$yyy

...我将值保存为文本并使用“,”划分值和“$$”划分类别进行解析。

到目前为止,我一直在用第二种方式做一些小事情,但现在我希望这个数据库有很多值和类别,我想知道哪个可以减少服务器负载——拥有一个非常巨大的 mySQL 数据库表和在每个页面上浏览它以查看哪些值属于当前用户;还是从一个相对较小的表中获取所有且仅他的值,但每次都使用 PHP 解析字符串以使其可用?

【问题讨论】:

  • 我想说第一种方法在更新值和插入方面更灵活
  • 第二个最有可能在服务器上“更轻”,因为字符串解析相对较少。为什么不将其存储为 JSON 而不是逗号分隔的字符串。将来它会更灵活一些,并且具有内置于 PHP 中的相同便利功能。
  • JSON 对我来说是一个全新的概念,我什至不知道要研究它,但我现在知道了!听起来很适合我提到的小东西。

标签: php mysql performance server-load


【解决方案1】:

第一种方法 - 这就是构建关系数据库的目的。您还可以获得索引的额外好处,即使数据集相当大,它也能保持速度。

此外,它允许从另一个方向查询数据 - 获取类别 2 等于 'eee' 的所有用户

【讨论】:

    【解决方案2】:

    在字段中插入未知数量的数据是一个非常糟糕的主意,因为您一开始就不知道如何对其进行标注。此外,您的数据库将无法以任何有用的方式对其进行索引,并且性能会随着系统的增长而下降。

    将类别和值放在单独的表中可以很好地扩展,就像亚当已经说过的那样,这就是关系数据库的全部意义所在。

    您可能想谷歌“数据库规范化”并浏览一些结果以获取更多信息。

    【讨论】:

    • 谢谢你们,我现在意识到这实际上是一个愚蠢的想法。这非常有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 2013-10-23
    • 1970-01-01
    • 2011-07-16
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多