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

Hvad gør en SQL-sætning sargerbar?

Den mest almindelige ting, der vil gøre en forespørgsel ikke-sargerbar er at inkludere et felt i en funktion i where-klausulen:

SELECT ... FROM ...
WHERE Year(myDate) = 2008

SQL-optimeringsværktøjet kan ikke bruge et indeks på myDate, selvom der findes et. Det bliver bogstaveligt talt nødt til at evaluere denne funktion for hver række i tabellen. Meget bedre at bruge:

WHERE myDate >= '01-01-2008' AND myDate < '01-01-2009'

Nogle andre eksempler:

Bad: Select ... WHERE isNull(FullName,'Ed Jones') = 'Ed Jones'
Fixed: Select ... WHERE ((FullName = 'Ed Jones') OR (FullName IS NULL))

Bad: Select ... WHERE SUBSTRING(DealerName,4) = 'Ford'
Fixed: Select ... WHERE DealerName Like 'Ford%'

Bad: Select ... WHERE DateDiff(mm,OrderDate,GetDate()) >= 30
Fixed: Select ... WHERE OrderDate < DateAdd(mm,-30,GetDate()) 


  1. Chen Notation

  2. Båndbreddevenlig forespørgselsprofilering til Azure SQL Database

  3. Indsæt flere rækker med en MySQL-forespørgsel

  4. Sådan får du adgang til Oracle DB i VirtualBox fra vært (Windows)