ホームページ >データベース >mysql チュートリアル >SQL クエリで「SELECT TOP 100 PERCENT」を使用する理由

SQL クエリで「SELECT TOP 100 PERCENT」を使用する理由

Barbara Streisand
Barbara Streisandオリジナル
2025-01-04 03:30:38505ブラウズ

Why Use

「上位 100 パーセントの選択」を使用する理由

SQL Server 2005 より前では、開発者は順序の使用を可能にするために「上位 100 パーセントの選択」テクニックを使用していました。ビュー定義内の by 句。ただし、この目的を超えて、現在継承されている一部のコードには、ASP.NET アプリケーションの ADO 内で使用される動的 SQL ステートメントに「上位 100 パーセントの選択」が含まれています。

質問: " を使用する理由はありますか?これらのシナリオでは「上位 100 パーセント」に該当しますか?

答え: 中級マテリアライゼーション

Adam Machanic のような専門家によると、「上位 100 パーセントの選択」は「中間マテリアライゼーション」に使用されました。その理由は次のとおりです。

SQL Server では、状況に応じてクエリをさまざまな順序で評価できます。たとえば、次の 2 つのクエリは、評価順序が曖昧であるため、異なる結果を生成する可能性があります:

SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1 AND CAST(foo AS int) > 100

SELECT foo
FROM
    (SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1) bar
WHERE
    CAST(foo AS int) > 100

ただし、SQL Server 2005 より前では、内部クエリを「上位 100 パーセントの選択」で囲むと、内部クエリが強制的に実行されていました。スプールされるため、一貫した評価順序になります:

SELECT foo
FROM
    (SELECT TOP 100 PERCENT foo From MyTable WHERE ISNUMERIC (foo) = 1 ORDER BY foo) bar
WHERE
    CAST(foo AS int) > 100

注意注

この手法は以前は許容されていましたが、一般的には動的 SQL で「上位 100 パーセントを選択」を使用しないことをお勧めします。パッチ レベル、スキーマ、インデックス、行数の変更により、結果が一貫しない可能性があります。

以上がSQL クエリで「SELECT TOP 100 PERCENT」を使用する理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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