sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server 2008 - Villkorlig fråga

bästa källan för dynamiska sökvillkor:

Dynamiska sökvillkor i T-SQL av Erland Sommarskog

det finns många subtila implikationer om hur du gör detta om ett index kan användas eller inte. Om du använder rätt version av SQL Server 2008 kan du bara lägga till OPTION (RECOMPILE) till frågan och den lokala variabelns värde vid körning används för optimeringarna.

Tänk på detta, OPTION (RECOMPILE) kommer att ta den här koden (där inget index kan användas med denna röra av OR s):

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

och optimera det vid körning (förutsatt att endast @Search2 skickades in med ett värde):

WHERE
    [email protected]

och ett index kan användas (om du har ett definierat på kolumn2)



  1. Felformat paketfel under MySQL LOAD DATA LOCAL INFILE

  2. Kan inte ansluta till mysql-databasen med play-slick 1.0.1/slick 3.0:konfigurationsfel

  3. första raden VS Nästa rad VS rownum

  4. Inkludera tabeller och scheman när du listar identitetskolumnerna i en SQL Server-databas