问题:计算MySQL的持续时间是否有任何优势,而不是计算PHP中的持续时间(然后存储在MySQL中)?
我打算计算每次活动完成时的持续时间。持续时间将以PHP计算,然后插入MySQL数据库(以及其他数据,如开始时间,结束时间,用户,活动等)。
但是,基于这个问题Database normalization: How can I tabulate the data?我得到的印象是,不是在插入时记录持续时间,而是应该根据保存在开头和结尾的值来计算它。 MySQL DB。
这听起来不错吗?如果是,有人可以解释原因吗?是否有任何推荐的方法来计算存储在MySQL中的值的持续时间?
编辑:
用户在线完成活动后,该活动的开始和结束时间将插入到数据库中。我打算使用这些值来计算持续时间(在MySQL中或在插入之前(使用PHP)。持续时间稍后将用于其他计算。
答案 0 :(得分:5)
我假设您start_time
有end_time
和duration
作为基础,两者都将存储在数据库中?然后是的,将duration
存储在数据库中几乎没有优势。它只是你已经存储的重复数据(持续时间=结束 - 开始,这是一个非常快速的计算),所以为什么要再次存储它?此外,这只允许数据不同步。说一些错误会导致end_time
更新,而不是duration
。现在你有不一致的数据,没有真正的方法知道哪个是正确的。
答案 1 :(得分:1)
我认为这取决于数据库的大小,服务器负载等...我曾经有过PHP处理速度更快的实例,而其他时候在MySQL处理。有很多因素会影响绩效。
但是,要记住的是,您要避免多个数据库调用。如果你打算在PHP中尝试这个,并循环遍历每条记录并对每条记录进行更新,我认为mysql调用的数量可能会影响性能。但是,如果在插入之前用PHP计算持续时间,那么它是有意义的。如果数据已经存在于数据库中,则可能只有一个更新语句是最佳选择。
只是我的2c
答案 2 :(得分:1)
在我看来,这主要取决于具体情况,因此可能会在帖子中添加更多细节,以便更好地了解您的目标。
但是,考虑到所有这些因素,我认为这个决定对大多数应用程序来说都是至关重要的,这很可能是个人风格和偏好的问题。
答案 3 :(得分:1)
我认为,在MySQL rahter中创建2个单独的字段比在PHP中计算持续时间更好。
原因
所以在我看来 - 添加单独的字段。这不是规范化问题,因为您没有复制任何数据。但是持续时间会。