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

SQL Server テーブルからランダムなサンプルを効率的に選択するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-19 08:07:10660ブラウズ

How Can I Efficiently Select a Random Sample from a SQL Server Table?

SQL Server テーブルからランダムなサンプルを効率的に選択します

大規模な SQL Server テーブルからランダムな行サンプルを取得することは、さまざまな目的に役立ちます。一般的なアプローチは、一時テーブルに「乱数」列を生成し、それに乱数値を入力し、乱数が目的の範囲内にある行を選択することです。ただし、このアプローチは複雑で非効率になる可能性があります。

より直接的な方法は、NEWID() 関数を使用することです。 NEWID() は、システム時間とランダム性の組み合わせに基づいて一意の識別子を生成します。 NEWID() の出力によってテーブルを並べ替えることで、行の順序を効果的にランダム化できます。

特定の割合の行を選択するには、TOP 句を使用できます。たとえば、[yourtable] という名前のテーブルから行の 10% を選択するには、次のクエリを使用します:

<code class="language-sql">SELECT TOP 10 PERCENT *
FROM [yourtable]
ORDER BY NEWID();</code>

この方法は一般に効率的ですが、特に大きなテーブルを操作する場合にはパフォーマンスの問題が発生する可能性があります。パフォーマンスを最適化するには、TOP 句と WHERE 句を組み合わせます:

<code class="language-sql">SELECT *
FROM [yourtable]
WHERE [yourPk] IN (
    SELECT TOP 10 PERCENT [yourPk]
    FROM [yourtable]
    ORDER BY NEWID()
);</code>

このクエリは [yourPk] を主キーとして使用します。内部クエリは選択された行の主キーを取得し、外部クエリはこれらの主キーを使用してテーブルをフィルタリングします。このアプローチでは、スキャンされる行数が減少するため、パフォーマンスが向上します。

以上がSQL Server テーブルからランダムなサンプルを効率的に選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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