2017-04-11 11 views

答えて

4

CockroachDBではこれを効率的に行う方法はありません。非効率的な使用方法SELECT ... FROM ... ORDER BY random() LIMIT 1;

また、SELECTステートメントの結果をアプリケーション自体でシャッフルすることもできます。結果を配列(または他の集合体のような構造)に入れた後、そこで順序をシャッフルすることもできます。

0

もっと効率的な方法として、整数列randomidを各行に追加することができます。挿入時にその列に乱数を入れてください。

SELECT ... FROM ... WHERE randomid >= ? ORDER BY randomid LIMIT 1;

:次に、あなたがランダムな列を取得することができますか?乱数です。

乱数のために余分なストレージが必要であり、randomid列をインデックスする必要があることに注意してください。

結果を確実に得るために、このクエリを2回実行する必要があります(> =と<)。最初のクエリーで打ち出される確率は非常に低いですが。

関連する問題