大規模な SQL Server テーブルからランダムな行のサブセットを抽出すると、大量の計算が必要になる可能性があります。 複雑な一時テーブルや反復プロセスを使用するのではなく、SQL Server の固有の機能を利用する、より効率的で簡単な方法です。
NEWID()
関数は、一意のランダム GUID を生成し、ランダムな行選択の基盤を提供します。 [yourtable]
という名前のテーブルから 10% のランダム サンプルを取得するには、次の簡潔なクエリを使用します。
<code class="language-sql">SELECT TOP 10 PERCENT * FROM [yourtable] ORDER BY NEWID()</code>
非常に大きなテーブルの場合、次の手法を使用してパフォーマンスの最適化が実現されます。
<code class="language-sql">SELECT * FROM [yourtable] WHERE [yourPk] IN (SELECT TOP 10 PERCENT [yourPk] FROM [yourtable] ORDER BY NEWID())</code>
このアプローチでは、キー スキャンを活用して、選択した行の主キー値を特定し、その後、元のテーブルと結合して完全な行データを取得します。 この結合操作は通常、特に大規模なデータセット上の小さな割合の選択の場合、最小限のオーバーヘッドで済みます。
これらの合理化された手法は、開発者に SQL Server テーブルからランダムなサンプルを選択する非常に効率的な手段を提供し、複雑でリソースを必要とする代替手段を回避します。
以上がSQL Server テーブルからランダムな行を効率的に選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。