Es wurde für die "Zwischenmaterialisierung (Google-Suche)"
verwendetGuter Artikel:Adam Machanic:Exploring the secrets of intermediate materialization
Er hat sogar ein MS Connect entwickelt, damit es auf eine sauberere Art und Weise gemacht werden kann
Meine Ansicht ist "nicht von Natur aus schlecht", aber verwenden Sie sie nicht, es sei denn, Sie sind sich zu 100% sicher. Das Problem ist, dass es nur zu dem Zeitpunkt funktioniert, zu dem Sie es tun, und wahrscheinlich nicht später (Patch-Level, Schema, Index, Zeilenanzahl usw.) ...
Ausgeführtes Beispiel
Dies kann fehlschlagen, da Sie nicht wissen, in welcher Reihenfolge die Dinge ausgewertet werden
SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1 AND CAST(foo AS int) > 100
Und das kann auch daran scheitern
SELECT foo
FROM
(SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1) bar
WHERE
CAST(foo AS int) > 100
Dies war jedoch in SQL Server 2000 nicht der Fall. Die innere Abfrage wird ausgewertet und gespoolt:
SELECT foo
FROM
(SELECT TOP 100 PERCENT foo From MyTable WHERE ISNUMERIC (foo) = 1 ORDER BY foo) bar
WHERE
CAST(foo AS int) > 100
Beachten Sie, dass dies immer noch in SQL Server 2005 funktioniert
SELECT TOP 2000000000 ... ORDER BY...