sql >> Database >  >> RDS >> Sqlserver

SQL Server 2008 - Voorwaardelijke query

beste bron voor dynamische zoekvoorwaarden:

Dynamische zoekvoorwaarden in T-SQL door Erland Sommarskog

er zijn veel subtiele implicaties over hoe u dit doet of een index kan worden gebruikt of niet. Als u de juiste versie van SQL Server 2008 gebruikt, kunt u gewoon OPTION (RECOMPILE) toevoegen naar de query en de waarde van de lokale variabele tijdens runtime wordt gebruikt voor de optimalisaties.

Overweeg dit, OPTION (RECOMPILE) zal deze code nemen (waar geen index kan worden gebruikt met deze puinhoop van OR s):

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

en optimaliseer het tijdens runtime (op voorwaarde dat alleen @Search2 werd doorgegeven met een waarde):

WHERE
    [email protected]

en een index kan worden gebruikt (als je er een hebt gedefinieerd op Kolom 2)



  1. LAST_DAY() Functie in Oracle

  2. MySQL-query:invoegen als invoer duplicaat is, anders de bestaande rijwaarden bijwerken

  3. Resultaten groeperen op aantal relaties

  4. Hoe maak ik een gebruiker aan met dezelfde rechten als root in MySQL/MariaDB?