「中間実体化(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...