【发布时间】:2013-10-23 06:55:31
【问题描述】:
我有一个表,我想在每个查询中插入大约 1000 个项目,并在创建后获取它们的 PK,以供以后用作其他表的 FK。
我尝试在 postgresql 中使用 returning 语法插入它们。 但插入大约需要 10 秒
INSERT INTO table_name (col1, col2, col3) VALUES (a1,a2,a3)....(a(n-2),a(n-1),a(n)) returning id;
通过删除RETURNING,我获得了更好的性能~50ms。
我认为,如果我可以通过原子操作获取第一个 id 并同时插入行,我可以通过删除 RETURNING 获得更好的性能。
但不明白这是否可能。
【问题讨论】:
-
一般
RETURNINGID 不会显着减慢插入速度。你能展示一个可重现的案例吗? -
@DanielVérité 似乎我从另一个查询而不是从插入中获得了较慢的性能。
-
@shevski 你能澄清一下吗?这是否意味着您最终发现有和没有
RETURNING的性能相同? -
@CharlBotha 嗯,这是一篇旧帖子,但我记得我有类似的表现
标签: python sql database postgresql psycopg2