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

SQL Server tidak menggunakan indeks yang membandingkan datetime dengan bukan null

Ini normal. Itu tidak akan menggunakan indeks kecuali predikatnya cukup selektif untuk menjaminnya.

Kedengarannya seperti sebagian besar catatan bukan NULL jadi alih-alih menemukannya melalui indeks yang tidak berkerumun maka harus melakukan banyak pencarian bookmark dan I/O acak untuk mengambil sisa kolom untuk mengembalikannya lebih cepat dan lebih efisien untuk cukup pindai seluruh indeks berkerumun.

Anda dapat menggunakan FORCESEEK untuk memaksa perilaku yang Anda katakan Anda inginkan. Anda mungkin akan menemukan bahwa waktu yang dibutuhkan dan statistik I/O melewati atap dibandingkan dengan pemindaian indeks berkerumun.

SET STATISTICS IO ON

SELECT * FROM 
YourTable WITH (FORCESEEK) 
WHERE YourCol IS NOT NULL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbaiki Msg 241 "Konversi gagal saat mengonversi tanggal dan/atau waktu dari string karakter" di SQL Server

  2. Kembalikan baris dalam urutan acak

  3. Cara Mengembalikan Kunci Duplikat dari Dokumen JSON di SQL Server

  4. Pernyataan INSERT bertentangan dengan batasan FOREIGN KEY

  5. Bagaimana cara mendapatkan skrip data SQL Server?