MySQL与Python的数据计算

MySQL与Python的数据计算,python,mysql,query-performance,sql-tuning,query-tuning,Python,Mysql,Query Performance,Sql Tuning,Query Tuning,我试图了解以下哪项是更好的选择: 使用Python从MySQL查询的输出进行数据计算。 在查询本身中执行计算。 例如,查询返回20行10列。 在Python中,我计算一些列的差分或除法 在查询或Python中这样做更好吗?这可能是一个品味问题,但 。。。给你一个与阿尔玛·杜蒙多的答案完全相反的答案,因为在选择上做了不那么简单的计算。。。子句中,我通常将DB用作计算器 选择中的计算。。。子句作为执行查询时的最后一步执行。此时仅使用相关数据。所有重要的工作都已经完成了,处理JOIN、where子句、

我试图了解以下哪项是更好的选择:

使用Python从MySQL查询的输出进行数据计算。 在查询本身中执行计算。 例如,查询返回20行10列。 在Python中,我计算一些列的差分或除法


在查询或Python中这样做更好吗?

这可能是一个品味问题,但

。。。给你一个与阿尔玛·杜蒙多的答案完全相反的答案,因为在选择上做了不那么简单的计算。。。子句中,我通常将DB用作计算器

选择中的计算。。。子句作为执行查询时的最后一步执行。此时仅使用相关数据。所有重要的工作都已经完成了,处理JOIN、where子句、聚合和排序

此时,对数据执行一些算术运算的额外负载非常小。这将减少应用程序和DB服务器之间的网络流量


这可能是一个品味的问题……

如果您正在对一行中的计算进行基本的算术运算,那么就在SQL中进行。这使您可以选择将结果封装在视图或存储过程中。在许多数据库中,它还提供了并行执行语句的可能性,尽管对于如此少的数据行,性能不是问题

如果您在MySQL中进行行与行之间的操作,例如获取列的最大值,那么平衡会更均匀。大多数数据库支持这些计算的简单函数,但MySQL不支持。查询的复杂性增加了在客户端进行这些计算的重要性

在我看来,最重要的考虑是代码的可维护性。通过使用数据库,您需要将业务规则合并到数据库中,例如,哪些实体与哪些其他实体相关。维护代码的一个主要问题是业务逻辑在各种系统中传播。我更倾向于采用一种尽可能精简此类逻辑的方法,在不同层之间创建非常清晰的API


对于这种方法,将通过视图对数据库进行读取访问。您所讨论的逻辑将进入视图,并可供数据库的任何用户使用-确保使用数据库的不同功能之间的一致性。写入访问将通过存储过程进行,以确保一致地检查业务规则并适当地记录操作。

它如何减少网络流量?从数据库传输到应用程序服务器的数据实际上会增加,因为查询中执行的计算意味着额外的列数,因此也意味着额外的数据。@Ravi可能我没有抓住要点,但是,比方说,要计算两列之和,我选择a+b,而不是选择a,b,在宿主语言上执行加法,我减少了将近50%的网络流量。同意。我的回答基于常见的案例,比如ORDER BY RAND,我不确定将结果封装在视图中的好处是否与我的案例相符。这些表经常更新,据我所知,视图在这种情况下并不特别有用。这可能是我对你的说法的误解,但你所说的MySQL不支持MAX等简单函数是什么意思。。。MySQL确实支持这些操作,对吗?@Ravi即使在MySQL中也支持聚合函数,但它缺乏。您可以轻松地模拟它们,但会增加复杂性和执行时间成本。