sql >> データベース >  >> RDS >> Sqlserver

Select Top 100Percentを使用する理由

    「中間実体化(Google検索)」に使用されました

    良い記事:Adam Machanic:中間的な具体化の秘密を探る

    彼はMSConnectを上げて、よりクリーンな方法で実行できるようにしました

    私の見解は「本質的に悪くはない」ですが、100%確実でない限り使用しないでください。問題は、それが実行されたときにのみ機能し、おそらくそれ以降は機能しないことです(パッチレベル、スキーマ、インデックス、行数など)...

    実例

    評価される順序がわからないため、これは失敗する可能性があります

    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 2000にはありませんでした。内部クエリが評価され、スプールされます:

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

    これはSQLServer2005でも機能することに注意してください

    SELECT TOP 2000000000 ... ORDER BY...
    


    1. データベーススキーマとは何ですか?

    2. ORA-28000を解決する方法アカウントがロックされています

    3. データベースでのユーザーアクセスを制限することが重要な理由

    4. 圧縮とそのパフォーマンスへの影響