我正在使用 PHP 开发 PostgreSQL。
是否可以从表WHERE条件的列中选择特定数量的随机值
代替
从表WHERE条件中选择列
然后将它们转换为数组并使用array_rand()
?
(我不想使用这种方式,因为我将有数百万行并且首先选择所有值然后array_rand()
可能会花费很多时间。)
假设我有一张这样的桌子:
name | items
-----------+------------
Ben | {dd,ab,aa}
-----------+------------
David | {dd,aa}
-----------+------------
Bryan | {aa,ab,cd}
-----------+------------
Glen | {cd}
-----------+------------
Edward | {aa,cd}
-----------+------------
Aaron | {dd,aa}
-----------+------------
..... (many many more)
更新:
我需要在一列(或基本上是 10 个随机行)中选择与条件匹配的 10 个随机值(在本例中为@> ARRAY[aa]
),而无需进行顺序表扫描或其他耗时的操作。
order by random()
这将花费大量时间,因为它必须处理每一行,所以我将采用更好的解决方案。