首先,我创建一个包含5列的表:
CREATE TABLE table1
(
a integer,
b character varying,
c character varying,
d numeric,
e numeric
)
其次,我向表中添加了100k行
https://gist.github.com/ericsalim/1d12628826195b52c5d282c2326f5e00
第三,我使用Psycopg2和SQLAlchemy
选择所有行Psycopg2的结果
SQLAlchemy的结果:
作为顶级Psycopg2上的ORM层的SQLAlchemy如何比Psycopg2本身更快?我的代码有问题吗?
答案 0 :(得分:2)
DictCursor
的开销。将其切换为使用标准游标和整数索引会导致psycopg2
表现优异。我想SQLAlchemy使用一种不同的,更有效的方法来支持字符串索引。但除了学术上的好奇心,我不会担心两者之间的表现差异 - 专注于哪一点对你来说更有成效。在大多数真实场景中,您将受到I / O限制,并且差异足够小,无关紧要。