sql >> Databasteknik >  >> RDS >> Sqlserver

Vad gör en SQL-sats sargbar?

Det vanligaste som gör en fråga icke-sargbar är att inkludera ett fält i en funktion i where-satsen:

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

SQL-optimeraren kan inte använda ett index på myDate, även om ett sådant finns. Det kommer bokstavligen att behöva utvärdera denna funktion för varje rad i tabellen. Mycket bättre att använda:

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

Några andra exempel:

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. Installerar MySQL-python

  2. Benchmarking Managed PostgreSQL Cloud Solutions - Del ett:Amazon Aurora

  3. Hur installerar man postgres med NSIS med alla parametrar?

  4. SQL INSERT utan att ange kolumner. Vad händer?