Oracleでランダムにレコードを取得するの劇的に早い方法がありました。 今までは乱数発生させてソートしていたのが関数1つで済むようになります。 テーブル・データをランダムサンプリングする - Oracle/オラクルをマスターするための基本と仕組みで紹介されています。 SAMPLEという関数を使うことで速度が劇的に早くなりました。 関数の説明はリンク先を参照して頂くとして実際にベンチを計ってみました。 約40万レコードのテーブルから10行をランダムに取得するSQLで計測しました。 SAMPLE使わない方法 SELECT WORD FROM (SELECT dbms_random.random() as rand, WORD FROM TEST ORDER BY rand) WHERE ROWNUM <= 10; 実行時間: 3.11698914秒 SAMPLE使う方法 SELECT WOR