我正在努力理解以下哪一个是更好的选择:
例如,查询返回包含10列的20行。在Python中,我计算一些列的差异或除法。
在查询或Python中这样做更好吗?
发布于 2013-08-16 10:02:35
这可能是品味的问题但是..。
..。为了给您一个与阿尔玛·多·蒙多的答案完全相反的答案,因为(不是这样)对SELECT ...子句进行了简单的计算,我通常倾向于使用DB“作为计算器”。
在执行查询时,计算(在SELECT ...子句中)作为最后一步执行。此时只使用相关数据。所有的“大任务”都已经完成(处理JOIN,其中的子句,聚合,排序)。
此时,对数据执行一些算术操作的额外负荷非常小。这将减少应用程序和DB服务器之间的网络通信量。
可能是味觉的问题..。
发布于 2013-08-16 10:36:29
如果要对一行的计算执行基本算术操作,则在SQL中执行。这使您可以选择将结果封装到视图或存储过程中。在许多数据库中,它还提供了并行执行语句的可能性(尽管性能不是少数数据行的问题)。
如果您在MySQL中执行行之间的操作(例如获取列的最大值),则余额更均匀。大多数数据库支持这些计算的简单函数,但MySQL不支持。查询的复杂性增加了在客户端执行这些计算的份量。
在我看来,最重要的考虑是代码的可维护性。通过使用数据库,必须将业务规则合并到数据库本身(例如,哪些实体与其他实体相关)。维护代码的一个主要问题是业务逻辑在各种系统中传播。我更希望有一种方法,这种逻辑尽可能精简,在不同层之间创建非常清晰的API。
对于这种方法,对数据库的“读”访问将通过视图进行。您正在讨论的逻辑将进入视图,并可供数据库的任何用户使用--确保使用数据库的不同功能之间的一致性。“写”访问将通过存储过程进行,确保一致地检查业务规则,并适当记录操作。
https://stackoverflow.com/questions/18270585
复制相似问题