【发布时间】:2013-11-13 22:49:04
【问题描述】:
我有一个数据库,其中包含我运行的许多模型的结果。我需要计算每个模型的 chi^2 值。我正在使用 python 和 psycopg2 与我的 PostgreSQL 数据库接口的包。我可以想到两种方法来做到这一点,但我不确定哪个更快,或者是否有区别。
方法一:从我的数据库中选择每个模型对应的行,然后在python中进行chi^2计算。每个模型都有大约 500-1000 行与之相关联,我必须读取这些行,并且有 20,000 个模型。
方法二:写一个SQL函数,计算数据库本身的chi^2,然后为每个模型选择这个数。
我比 SQL 更熟悉 Python,所以我很想单独使用方法 1。但是,我可以看到让 postgres 优化关系代数然后只需将每个模型读入我的 python 脚本的单个数字的优势。在选择一种方法而不是另一种方法时,我应该遵循一个通用策略吗?
【问题讨论】:
-
方法 2 看起来更高效。 Plus 数据库函数本质上是可重复使用的。
-
在这种情况下我通常会选择方法2
-
在适当的数据库服务器上只有 20,000 条记录,所有过滤和行内计算几乎都是即时的。
-
Postgres 支持 PL/Python,这意味着你也可以使用 python 实现方法 2。
标签: python sql postgresql psycopg2