ホームページ >データベース >mysql チュートリアル >SQL データベース テーブルからランダムな行を効率的に取得するにはどうすればよいですか?

SQL データベース テーブルからランダムな行を効率的に取得するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-23 06:21:12866ブラウズ

How Can I Efficiently Retrieve a Random Row from an SQL Database Table?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。