7

テーブルから1000行のランダムな行を取得し、Oracleのソリューションを見つける必要があります。しかし、大量の行を含むテーブルからデータを取得するときにこのクエリを使用すると、完了するまでに最大3分かかります。

SELECT column FROM
( SELECT column FROM table
ORDER BY dbms_random.value )
WHERE rownum <= 1000

これは、すべての行が選択され、1000が必要な場合にすべての行がランダムな値で並べ替えられるために発生します。このような問題の回避策はありますか?たぶん、ランダムな行を選択するカーソルと一緒にdbms_random.valueを使用します。

4

1 に答える 1

10

私はこの方法でそれを行います:

SELECT column 
FROM table sample (1)
where rownum <= 1000
--ORDER BY dbms_random.value 
 ;

テーブルから1%のサンプルを取得し、最初の1000で停止します(必要に応じてランダムに注文します)。

あなたが望むことをするためのより良い方法が存在することは可能です。これが私が試してみるものです。

于 2013-01-31T08:33:22.253 に答える