Closed. This question is opinion-based。它当前不接受答案。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
6年前关闭。
Improve this question
因此,我正在执行一项任务,即在一个巨大的MySQL表中为每100条记录计算中位数,这似乎是一个简单的问题,但最终会产生非常复杂的SQL代码。一位看到我的作品的 friend 问我,为什么不将数据加载到内存中并用C或Python处理它,会不会更容易?我的直觉是,这是一个坏主意。但是,有人可以详细说明为什么不建议这样做吗?谢谢!
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
6年前关闭。
Improve this question
因此,我正在执行一项任务,即在一个巨大的MySQL表中为每100条记录计算中位数,这似乎是一个简单的问题,但最终会产生非常复杂的SQL代码。一位看到我的作品的 friend 问我,为什么不将数据加载到内存中并用C或Python处理它,会不会更容易?我的直觉是,这是一个坏主意。但是,有人可以详细说明为什么不建议这样做吗?谢谢!
最佳答案
通常,是的,您应该在数据库中进行繁重的工作。如果您的数据集很小,那么您是在数据库服务器上还是在数据库客户端上进行计算都没关系。
无论是在数据库服务器上还是在数据库客户机上进行计算,通常要考虑的主要因素是性能。如果在db客户端上进行大量计算,则最终可能不得不通过db连接传输大量数据。对于大型数据集,将整个表传输到客户端可能会成为性能问题,并且如果您的数据库服务器与应用程序服务器位于不同的计算机(即非本地主机)中,则网络传输开销会变得更糟。
如果仍然必须传输整个数据集,那么性能可能不会有任何显着差异。 SQL语言本身并不固有地比对客户端语言进行数字处理快,它只是具有在服务器进程上运行的优势,因此可以避免数据传输的开销。
也有一些应用程序使用多个数据源,对于这些应用程序,通常您将不得不别无选择,只能在客户端进行部分计算。
最终,您必须进行测量。不管是否是最佳实践,如果在客户端中进行计算足够快并且可以简化这样做的总体代码,那么就可以采用这种方法。