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