Sequel gem + postgres 一次处理大型集与小型集的性能

Sequel gem + postgres performance handling large set at once vs. small set

我有一个包含大约 300 万行(四或五列、整数和字符串)的数据库。我想知道什么是最佳做法:

A) 在一列整数上使用 DISTINCT,然后使用 .map(:some_column) 获取 :some_column

的所有唯一值

B) 与上面相同,但在每次调用时使用 .limit(100),并在每 100 行中移动,对每组 100 行执行需要完成的操作。

有区别吗?

取决于 300 万行中有多少个唯一值。如果只有 10,000 个唯一值,那么 map(:some_column) 就可以了。如果有 300 万个唯一值,那将是痛苦的。您绝对想避免 limit/offset 方法。对于大量唯一值,最快的方法可能是使用 sequel_pg 中的流式支持,或者为了更快地降低一个级别并直接使用 ruby-pg 驱动程序(也在那里进行流式传输) .