Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Apa yang membuat pernyataan SQL sargable?

Hal paling umum yang akan membuat kueri tidak dapat dimaklumi adalah menyertakan bidang di dalam fungsi dalam klausa where:

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

Pengoptimal SQL tidak dapat menggunakan indeks pada myDate, meskipun ada. Ini benar-benar harus mengevaluasi fungsi ini untuk setiap baris tabel. Jauh lebih baik untuk digunakan:

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

Beberapa contoh lain:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bisakah saya memiliki kunci asing yang mereferensikan kolom dalam tampilan di SQL Server?

  2. Cara Menampilkan Kolasi Server di SQL Server (T-SQL)

  3. Batasan yang Dapat Ditangguhkan di SQL Server

  4. Konversi Implisit Format Sumber SSIS untuk Datetime

  5. Memisahkan string di sql server