sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server 2008 - Betinget forespørgsel

bedste kilde til dynamiske søgebetingelser:

Dynamiske søgebetingelser i T-SQL af Erland Sommarskog

der er en masse subtile konsekvenser for, hvordan du gør dette, om et indeks kan bruges eller ej. Hvis du er på den korrekte udgivelse af SQL Server 2008, kan du bare tilføje OPTION (RECOMPILE) til forespørgslen, og den lokale variabels værdi ved kørsel bruges til optimeringerne.

Overvej dette, OPTION (RECOMPILE) vil tage denne kode (hvor intet indeks kan bruges med dette rod af OR s):

WHERE
    (@search1 IS NULL or [email protected])
    AND (@search2 IS NULL or [email protected])
    AND (@search3 IS NULL or [email protected])

og optimer det på kørselstidspunktet (forudsat at kun @Search2 blev sendt ind med en værdi):

WHERE
    [email protected]

og et indeks kan bruges (hvis du har et defineret på Kolonne2)



  1. Forbindelsespuljen for databasen '/data/data/msv_database.db' har ikke været i stand til at give en forbindelse. Forbindelser:0 aktiv, 1 inaktiv, 0 tilgængelig

  2. Sådan INSERT Hvis række ikke eksisterer (UPSERT) i MySQL

  3. Mysql ERROR 1005 (HY000):Kan ikke oprette tabel 'tmp' (fejlnr:13)

  4. Sådan håndteres flere objekter ved at bruge Objekt Explorer Detail Windows i SSMS - SQL Server / TSQL Tutorial Del 22