我有一个大约300万行的数据库(四列或五列,整数和字符串)。我想知道做什么更为理想:
A)在整数列上使用DISTINCT,然后使用.map(:some_column)
获取所有唯一值:some_column
或
B)与上面相同,但在每次调用时使用.limit(100)
,并在每100行中移动,执行每组100行需要完成的操作。
它有所作为吗?
答案 0 :(得分:1)
取决于300万行中有多少唯一值。如果只有10,000个唯一值,那么map(:some_column)
就可以了。如果有300万个独特的价值观,那将会很痛苦。你肯定想避免限制/抵消方法。对于大量唯一值的最快方法可能是使用sequel_pg中的流支持,或者更高速度下拉一个级别并直接使用ruby-pg驱动程序(也在那里流式传输)。