1

重複の可能性:
大規模なデータセットからのランダム サンプリング

以前ここに質問を投稿しました

そして、すべてが順調でダンディだと思っていましたが、結果のランダム性を確認しに行ったところ、何もないことがわかりました。クエリの他の側面は正常に機能しますがtop X、何をしようとしても、テーブルから数値を取得しています。SQL Server では、サブクエリで order by 句を使用することが許可されていないため、本当にランダムなサンプルを取得していることを確認するには、どうすればこれを回避できますか?

4

1 に答える 1

1

ORDER BYを指定する限り、サブクエリで使用できます。TOP

古いトリックはSELECT TOP 100 PERCENT ... ORDER BY NEWID()、サブクエリで使用して、オプティマイザをだましてクエリの途中でサブクエリを具体化することでした。

それ以来、SQL オプティマイザ チームの高レベルの人々は、オプティマイザはすべての行を返し、それを無視することを知っていると述べています (ただし、それでも試してみる価値はあります)。

それが失敗した場合は、次とSELECT TOP 2147483647 ... ORDER BY NEWID()同じことを達成してみてくださいTOP 100 PERCENT

于 2012-11-29T17:44:46.620 に答える