Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL SELECT WHERE datetime cocok dengan hari (dan belum tentu waktu)

TIDAK PERNAH gunakan pemilih seperti DATE(datecolumns) = '2012-12-24' - itu adalah pembunuh kinerja:

  • ini akan menghitung DATE() untuk semua baris, termasuk yang tidak cocok
  • itu akan membuat tidak mungkin menggunakan indeks untuk kueri

Jauh lebih cepat untuk digunakan

SELECT * FROM tablename 
WHERE columname BETWEEN '2012-12-25 00:00:00' AND '2012-12-25 23:59:59'

karena ini akan memungkinkan penggunaan indeks tanpa perhitungan.

EDIT

Seperti yang ditunjukkan oleh Used_By_Already, dalam waktu sejak jawaban awal pada tahun 2012, telah muncul versi MySQL, di mana menggunakan '23:59:59' sebagai akhir hari tidak lagi aman. Versi yang diperbarui harus membaca

SELECT * FROM tablename 
WHERE columname >='2012-12-25 00:00:00'
AND columname <'2012-12-26 00:00:00'

Inti dari jawabannya, yaitu penghindaran pemilih pada ekspresi yang dihitung, tentu saja masih berlaku.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menyiapkan Laravel pada kesalahan migrasi artisan php Mac:Tidak ada file atau direktori seperti itu

  2. PHP mysql mencari beberapa tabel menggunakan kata kunci

  3. Bagaimana saya bisa menggunakan objek PDO dengan benar untuk kueri SELECT berparameter?

  4. Cara Memperbaiki Peringatan Penasihat Keamanan MySQL

  5. Cara Mengembalikan Posisi Item Daftar di MySQL