gpt4 book ai didi

mysql - 执行计算 SQL

转载 作者:行者123 更新时间:2023-11-29 22:20:59 27 4
gpt4 key购买 nike

我试图从一个 MySQL 表中获取信息,对该数据执行一系列计算,然后将结果放入第二个 MySQL 表中。执行此操作的最佳方法是什么(即在 MySQL 本身中,使用 python 等)?

很抱歉我的含糊之处,我会尽力更具体。表1列出了我类每个人吃的每顿饭,因此每顿饭都是主键,其他列包括人和卡路里数。表 2 的主键是人,另一列是这个人摄入的总卡路里占全类卡路里的百分比。另一列是这个人的性别在类(class)中的总卡路里百分比。每天,我都想获取新的饮食信息,并用它来更新表 2 中的百分比。(感谢您的帮助!)

最佳答案

假设计算可以用 SQL 完成(百分比肯定是可行的),你有一些选择。

第一个也是学术上正确的选择是根本不将其存储在表中。 normalization的原则之一是您不存储重复值或计算值 - 相反,您根据需要计算它们。

这不仅仅是一个学术问题 - 它避免了许多愚蠢的错误和异常,并且意味着您的数据始终是最新的 - 您不必等待计算查询运行才能使用数据.

如果计算是重要的和/或业务领域的重要组成部分,常见的做法是创建数据库 view ,查询时其行为类似于表格,但实际上是动态计算的。这意味着业务逻辑被封装在 View 中,而不是在多个查询中重复。您可以更进一步,使用物化 View 等 - 但基本原理是相同的。

在某些情况下,数据量很大,或者计算很耗时,或者你的计算很难嵌入到单个 SQL 语句中,创建“聚合表”是很常见的 - 这就是你在建议。您可以通过(计划的)查询或使用数据库触发器来填充这些表。

但是,聚合表是最后的手段 - 它们使解决方案难以维护和调试 - 如果数据错误,您不需要调试单个查询,您已经必须始终遵循逻辑链。

假设您所在的类(class)有几十人,并且正在报告不到 1000 万年的膳食,任何现代 RDBMS 都可以在几毫秒内计算出此报告 - 确实没有必要将其存储在聚合表中。

关于mysql - 执行计算 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30726782/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com