Es wurde für " Zwischenmaterialisierung (Google-Suche) " verwendet
Guter Artikel: Adam Machanic: Die Geheimnisse der Zwischenmaterialisierung erforschen
Er hat sogar ein MS Connect angehoben, damit es sauberer gemacht werden kann
Meine Ansicht ist "nicht von Natur aus schlecht", aber verwenden Sie sie nur, wenn Sie 100% sicher sind. 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.) ...
Gearbeitetes Beispiel
Dies kann fehlschlagen, weil 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 in SQL Server 2005 weiterhin funktioniert
SELECT TOP 2000000000 ... ORDER BY...