计算MySQL的持续时间是否有任何优势,而不是计算PHP中的持续时间(然后存储在MySQL中)?

时间:2012-02-02 07:11:05

标签: php mysql

问题:计算MySQL的持续时间是否有任何优势,而不是计算PHP中的持续时间(然后存储在MySQL中)?

我打算计算每次活动完成时的持续时间。持续时间将以PHP计算,然后插入MySQL数据库(以及其他数据,如开始时间,结束时间,用户,活动等)。

但是,基于这个问题Database normalization: How can I tabulate the data?我得到的印象是,不是在插入时记录持续时间,而是应该根据保存在开头和结尾的值来计算它。 MySQL DB。

这听起来不错吗?如果是,有人可以解释原因吗?是否有任何推荐的方法来计算存储在MySQL中的值的持续时间?

编辑:

用户在线完成活动后,该活动的开始和结束时间将插入到数据库中。我打算使用这些值来计算持续时间(在MySQL中或在插入之前(使用PHP)。持续时间稍后将用于其他计算。

4 个答案:

答案 0 :(得分:5)

我假设您start_timeend_timeduration作为基础,两者都将存储在数据库中?然后是的,将duration存储在数据库中几乎没有优势。它只是你已经存储的重复数据(持续时间=结束 - 开始,这是一个非常快速的计算),所以为什么要再次存储它?此外,这只允许数据不同步。说一些错误会导致end_time更新,而不是duration。现在你有不一致的数据,没有真正的方法知道哪个是正确的。

答案 1 :(得分:1)

我认为这取决于数据库的大小,服务器负载等...我曾经有过PHP处理速度更快的实例,而其他时候在MySQL处理。有很多因素会影响绩效。

但是,要记住的是,您要避免多个数据库调用。如果你打算在PHP中尝试这个,并循环遍历每条记录并对每条记录进行更新,我认为mysql调用的数量可能会影响性能。但是,如果在插入之前用PHP计算持续时间,那么它是有意义的。如果数据已经存在于数据库中,则可能只有一个更新语句是最佳选择。

只是我的2c

答案 2 :(得分:1)

在我看来,这主要取决于具体情况,因此可能会在帖子中添加更多细节,以便更好地了解您的目标。

  • 如果您的程序有很多与数据库相关的操作,那么 数据库服务器比你的PHP服务器慢,它是关于 成千上万的计算,可能会更好 在PHP代码中计算。
  • 如果您的计划没有离开 数据库非常孤独,你的代码已经做了很多 工作,也许那么让数据库做得更好 工作。
  • 如果您已经在表格中存储了开始和结束时间, 存储持续时间通常不是必要的开销(可以 无论如何都要这样做,以提高数据库的性能 空间问题)。

但是,考虑到所有这些因素,我认为这个决定对大多数应用程序来说都是至关重要的,这很可能是个人风格和偏好的问题。

答案 3 :(得分:1)

我认为,在MySQL rahter中创建2个单独的字段比在PHP中计算持续时间更好。

原因

  • 虽然可能是真的,MySQL必须在每次检索时计算它,但是MySQL也非常擅长这一点。通过创建一个制作精良的索引,这应该没有负面的性能副作用。
  • 它为您提供了更多数据。可以说,您希望了解用户何时完成特定操作。如果只保留持续时间,则必须再次计算此时间,从而使其容易出错。保持另一个约会可能会派上用场。
  • 同样如此,如果您想计算多个用户的活动之间的某些差异。在这种情况下,预先计算的值将是a * s中的痛苦,因为它会使您进行更多的反向计算。

所以在我看来 - 添加单独的字段。这不是规范化问题,因为您没有复制任何数据。但是持续时间会。