【发布时间】:2021-07-02 12:08:57
【问题描述】:
我有一个红移查询,其输出太大而无法放入我的 EC2 实例的 RAM。我正在使用psycopg2 来执行查询。如果我使用限制关键字,如果我增加限制,行会重复吗?
假设我首先执行0,1000 的限制并获得一个块,然后我执行1001,2000 的限制。考虑到 redshift 并行获取数据,这两个块中是否会有重复行?
有没有更好的选择?
【问题讨论】:
-
您应该始终使用
LIMIT和ORDER BY。ORDER BY应该有唯一定义每一行的键。那么你就不用担心重复了。 -
首先,您真的需要将它们全部加载到 RAM 中吗?您可以仅通过缓冲和流水线处理所有内容,而无需实际同时加载所有内容。
-
或者,您可以多次运行查询(假设您添加了
ORDER BY)。但是,如果同时修改数据库,则此策略可能无法正常工作。如果数据被其他进程修改,您的多个查询可能会在结果中出现差距或重复。 -
我刚刚正确地查看了这个问题;请注意,Redshift 不支持
LIMIT的行范围。
标签: sql python-3.x amazon-redshift