【问题标题】:MySQL field managementMySQL 字段管理
【发布时间】:2010-09-20 08:41:54
【问题描述】:

当我进行查询时,我经常会想:

添加额外的字段是否更好 表,或者只是获取值和 在你的服务器端计算 语言?

例如,表 Student 包含 Student.score 字段。我要考成绩。

我是否得到分数并制作一堆 if/else/switch 成绩?

我是否通过添加一个字段来浪费空间只是为了存储 依赖于另一个的东西 领域?

每当您需要成绩时,前者很烦人。 当我想到空间使用时,后者让我害怕。如果我只有 10,000 条记录,那么我已经浪费了 10,000 个字段!

考虑到重要的表和大中型数据库,哪种方法最有效?

如果重要,让我们使用 PHP 作为服务器端语言。

【问题讨论】:

    标签: performance mysql-management mysql


    【解决方案1】:

    您的数据持久层通常不应存储经常更改的计算值。这样做会产生风险,即允许停滞数据在数据存储中持久存在,然后影响业务层,进而影响其他一切。

    一般来说,您总是希望在运行时生成计算值。

    但是,在确定解决任何设计问题的最佳方法时,我不会担心数据库中的单个附加字段。硬盘空间既便宜又充足。 :-)

    【讨论】:

      【解决方案2】:

      您的数据库比您想象的要强大得多。

      这在很大程度上取决于您的数据库类型和版本,但您可以使用一些过程和函数来提高脚本的效率。与现有的多行解决方案服务器端语言相比,这些方法可以是简单的快速调用。为什么不制定一个程序——当被调用时——返回所有学生的信息以及它为你计算的字母等级?为什么不使用一些数学函数来找出两个字段之间的差异?为什么不使用 datetime 函数来格式化您的日期字段?

      您可以通过多种方式使用数据库来处理信息。这仅取决于您期望数据库的大小。如果它只是一个简单的 5 页 CMS 网站,那么,不,您可能不希望在数据库方面完成太多工作,但是,如果您有一个包含多个相互关联的大容量表的大型数据库那么,是的,您可能希望将一些处理转移到数据库。

      【讨论】:

      • 当您需要时,+1 有趣在哪里?那么,如果数据库容量更大且更活跃,为什么您会倾向于在数据库中进行更昂贵的处理??
      • 我知道至少一个我能想到的例子。我在我管理的一个应用程序中遇到了一种情况,我需要从至少 5 个表中收集、处理和组织信息。与其拥有 200 多行代码,不如让它成为一个简单的过程调用?
      • 性能?我的意思是,我不是在反驳你所说的,我试图找出将 DB 繁重的工作留给 DB 已经在做繁重的工作的原因。
      • 我也明白你在说什么。我只是想明确指出,有些复杂性最好由数据库处理。性能是一回事,但在某些情况下,性能虽然很差,但仍然比使用服务器端更好。
      【解决方案3】:

      当您添加额外字段时,您还需要考虑每当它所依赖的字段更新时,额外字段也需要更新。是否可以将计算移动到 SQL 中,而不是遍历记录集并在服务器端代码中执行?

      【讨论】:

        猜你喜欢
        • 2010-11-29
        • 2018-01-15
        • 2014-10-23
        • 2018-11-20
        • 1970-01-01
        • 2012-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多