SQL Server での TOP 100 PERCENT の使用
SQL Server 2005 より前では、SELECT TOP 100 PERCENT 句がトリックとして使用される可能性がありました。ビュー定義で ORDER BY 句の使用を強制します。ただし、その使用法は、さまざまなアプリケーションの動的 SQL ステートメントのビュー定義を超えて拡張されます。
中間実体化
動的 SQL における SELECT TOP 100 PERCENT の主な目的は、「中間実体化。」この手法では、最終的なクエリの実行前に、中間テーブルまたはクエリ結果を一時ストアとして作成することが含まれます。 TOP 100 PERCENT を使用すると、一時ストアは元のクエリのすべての行で実体化され、行の順序が確実に保持されます。
実際の例
次のクエリ:
SELECT foo FROM MyTable WHERE ISNUMERIC (foo) = 1 AND CAST(foo AS int) > 100
このクエリは、 WHERE 句と ORDER BY 句。ただし、TOP 100 PERCENT を使用すると、次のクエリが機能します:
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 Server 2000 以前では、この手法により内部クエリの具体化が強制され、行の順序が確実に保持されていました。これと同じ動作が SQL Server 2005 にもまだ存在します。
ただし、TOP 100 PERCENT を過度に使用するとパフォーマンスに影響を与える可能性があることに注意することが重要であり、絶対に必要な場合にのみ使用する必要があります。可能であれば、行の順序付けには明示的なテーブル パーティショニングまたはストアド プロシージャを使用することをお勧めします。
以上がSQL Server で「SELECT TOP 100 PERCENT」を使用する場合とその理由は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。