Mysql 为什么(可能)用C/Python之类的编程语言处理数据库数据是个坏主意?

Mysql 为什么(可能)用C/Python之类的编程语言处理数据库数据是个坏主意?,mysql,sql,database,Mysql,Sql,Database,因此,我正在为一个巨大的MySQL表中的每100条记录计算中间值,这似乎是一个简单的问题,但最终会产生非常复杂的SQL代码。我的一个朋友看到了我的作品,他问我,为什么不把数据加载到内存中,用C或Python处理它,这不是更容易吗?我的直觉是这是个坏主意。但有人能详细说明为什么不建议这样做吗?谢谢大家! 我想不出什么好理由来告诉您,使用前端来处理存储在MySQL数据库中的数据是个坏主意。。。对我来说,这就像“不要用刀子切食物,因为你可以切自己的手指” 当然,您可以编写一些存储过程或函数,这些存储过

因此,我正在为一个巨大的MySQL表中的每100条记录计算中间值,这似乎是一个简单的问题,但最终会产生非常复杂的SQL代码。我的一个朋友看到了我的作品,他问我,为什么不把数据加载到内存中,用C或Python处理它,这不是更容易吗?我的直觉是这是个坏主意。但有人能详细说明为什么不建议这样做吗?谢谢大家!

我想不出什么好理由来告诉您,使用前端来处理存储在MySQL数据库中的数据是个坏主意。。。对我来说,这就像“不要用刀子切食物,因为你可以切自己的手指”

当然,您可以编写一些存储过程或函数,这些存储过程或函数可能会为您提供所需的结果,但是如果您无法使其与MySQL一起工作,那么显而易见的一步就是使用另一个工具

但是,您必须采取一些预防措施:

  • 不要使您的网络连接过载(如果您在本地主机上工作,则这是微不足道的)
  • 不要试图在内存中存储太大的结果集:保持简单和小(分而治之)
  • 让数据库服务器来完成繁重的工作,并使用前端来完成精细的工作(如果需要过滤数据,让MySQL来为您过滤,并编写代码对过滤后的数据进行计算)
  • 向MySQL发送查询时,请确保采取适当的预防措施(避免SQL注入漏洞)

  • 一般来说,是的,您应该在数据库中完成繁重的工作。如果您的数据集相当小,那么无论是在数据库服务器上还是在数据库客户机上进行计算都无关紧要

    是否在db服务器上进行计算,而在db客户端上进行计算,主要考虑的是性能。如果您在db客户机上进行繁重的计算,那么最终可能需要通过db连接传输大量数据。对于大型数据集,将整个表传输到客户端可能会导致性能问题,如果数据库服务器与应用程序服务器位于不同的计算机上(即不是本地主机),则网络传输开销会变得更大

    如果必须传输整个数据集,那么可能不会有任何显著的性能差异。SQL语言本身在处理数字方面并不比客户机语言快,它只是具有在服务器进程上运行的优势,因此可以避免数据传输的开销

    也有使用多个数据源的应用程序,对于这些应用程序,通常您将没有其他选择,只能在客户端执行部分计算


    最终,你必须衡量。无论这是否是最佳实践,如果在客户端进行计算足够快,并且简化了执行该操作的总体代码,那么一定要走这条路线。

    但是使用SQL和其他工具之间不应该有显著的性能差异吗?由于SQL在很多情况下确实不方便,我想它一定有它存在的原因。当然,没有免费的午餐。。。但是,正如我所说,如果你不能让它与MySQL一起工作,那么你需要另一个工具。尝试编写存储过程(如果您的计算不太复杂,可能会更快)。如果您不能让它与存储过程一起工作,为什么不尝试其他方法呢?是的,根据情况进行测量确实比坚持一种“最佳实践”要好。谢谢你关于预防的提示!解释得很透彻。对于单独的机器来说,开销应该是一个更大的问题。谢谢