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

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

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-19 08:02:14729ブラウズ

SQL Server テーブルからランダムな行を効率的に抽出します

SQL Server テーブルからのランダム サンプルの生成は、さまざまな目的に役立つ操作です。一般的な解決策は、テーブルから固定数の行をランダムに選択することです。

複雑なメソッドの欠点

この記事で言及されている問題は、一時テーブルと RAND() ループを使用した複雑なメソッドを指摘しています。これらの方法は非効率的で柔軟性に欠けます。

NEWID() メソッドの制限

この記事では、NEWID() 関数を使用した別の方法についても言及しています。ただし、このアプローチは、特定の割合の行を選択するという要件には適さない場合があります。

T-SQL ソリューション

この問題を解決するために、この記事では SQL Server スクリプトを提供しています。

<code class="language-sql">select top 10 percent * from [yourtable] order by newid()</code>

このステートメントは NEWID() 関数と TOP 句を使用して行の上位 10% を選択し、テーブルのランダムなサンプルを返します。

大規模なテーブルの最適化方法

大規模なテーブルの場合、次の変更されたスクリプトを使用することでパフォーマンスを向上させることができます:

<code class="language-sql">select * from [yourtable] where [yourPk] in 
(select top 10 percent [yourPk] from [yourtable] order by newid())</code>

このメソッドは 2 つのステップで機能します。まず、ランダムな主キー値を選択し、次にこれらの主キー値を使用して対応する行を取得します。キーのスキャンと結合のコストのバランスが取れ、大規模なテーブルの効率が向上します。

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

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

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