ホームページ >データベース >mysql チュートリアル >SQL データベース テーブルからランダムな行を効率的に取得するにはどうすればよいですか?
SQL データベース内のランダムな行の選択
SQL データベース テーブルから単一のランダムな行を効率的に取得するには、慎重な検討が必要です。 真のランダム性を保証するのは困難ですが、いくつかの SQL 手法ではほぼランダムな選択が可能です。
ランダムな行選択へのアプローチ:
最適な方法は、特定のデータベース システムによって異なります。
MySQL および PostgreSQL:
このアプローチでは、RAND()
関数を使用します。
<code class="language-sql">SELECT column FROM table ORDER BY RAND() LIMIT 1;</code>
Microsoft SQL Server:
SQL Server は NEWID()
関数を使用します:
<code class="language-sql">SELECT TOP 1 column FROM table ORDER BY NEWID();</code>
IBM DB2:
DB2 は、RAND()
関数と FETCH FIRST
を併用します:
<code class="language-sql">SELECT column, RAND() AS IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY;</code>
オラクル:
Oracle はサブクエリ内で dbms_random.value
を使用します:
<code class="language-sql">SELECT column FROM ( SELECT column FROM table ORDER BY dbms_random.value ) WHERE rownum = 1;</code>
これらのメソッドは各行にランダムな値を生成し、これらの値に基づいて行を順序付けします。 次に、LIMIT
句 (または同等のもの) が一番上の行を選択します。 完全にランダムではありませんが、これらの手法はほとんどのアプリケーションに対して実用的なソリューションを提供します。 これらのクエリは計算コストが高くなる可能性があるため、特に大規模なテーブルではパフォーマンスへの影響に留意してください。
以上がSQL データベース テーブルからランダムな行を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。