说我有一个具有5-6列和几百行的PostgreSQL表。使用psycopg2将 entire 表加载到我的Python程序中并使用Python选择我想要的行并根据需要对行进行排序会更有效吗?或者使用SQL选择所需的行,对其进行排序,然后仅将这些特定的行加载到我的Python程序中会更有效。
“有效”是指:
此外,这些因素将随着表格大小的增加而开始变化?说,表现在有几百万行了?
答案 0 :(得分:3)
在PostgreSQL中执行所有这些操作几乎总是会更快。这些数据库系统经过精心设计,可以很好地扩展以处理大量数据,并针对其典型用例进行了高度优化。例如,他们不必从磁盘加载所有数据即可执行最基本的过滤器 [1] 。
即使不是这种情况,仅网络延迟/使用情况就足以平衡这一点,尤其是在您经常运行查询的情况下。
答案 1 :(得分:2)
实际上,如果将已经加载到内存中的数据与从数据库中检索到的数据进行比较,则内存中操作通常会更快。数据库有开销:
与每个查询的等效内存操作相比,其中的前两个特别增加了开销。
这并不意味着数据库没有优势,尤其是对于复杂的查询:
数据库的优点不是它们始终提供最佳性能。优点是它们可以通过简单的界面在各种请求中提供 good 性能(即使您不喜欢SQL,我认为您也需要承认它更简单,更简洁,并且可以更灵活地使用第三代语言编写代码。
此外,数据库通过ACID属性和其他支持数据完整性的机制来保护数据。