sql >> Databasteknik >  >> RDS >> Sqlserver

Varför använda Select Top 100 Percent?

Det användes för "mellanliggande materialisering (Google-sökning)"

Bra artikel:Adam Machanic:Exploring the secrets of intermediate materialization

Han tog till och med upp en MS Connect så att det kan göras på ett renare sätt

Min uppfattning är "inte i sig dålig", men använd den inte om du inte är 100% säker. Problemet är att det bara fungerar när du gör det och förmodligen inte senare (patchnivå, schema, index, radantal etc)...

Fungerat exempel

Detta kan misslyckas eftersom du inte vet i vilken ordning saker och ting utvärderas

SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1 AND CAST(foo AS int) > 100

Och detta kan också misslyckas eftersom

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

Detta gjorde dock inte i SQL Server 2000. Den inre frågan utvärderas och spoolas:

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

Observera att detta fortfarande fungerar i SQL Server 2005

SELECT TOP 2000000000 ... ORDER BY...


  1. Hur man installerar SQL Server Manager Studio (SSMS) - SQL Server / TSQL självstudie del 1

  2. Hur man återställer MySQL root-lösenord

  3. Grundläggande tabelluttryck, del 9 – vyer, jämfört med härledda tabeller och CTE

  4. SQL CREATE DATABASE Syntax – Listad av DBMS