Cara Memilih Rekod MySQL Berdasarkan Hari Tanpa Mengambilkira Masa
Apabila bekerja dengan jadual yang mengandungi lajur datetime, selalunya perlu mendapatkan semula rekod untuk hari tertentu, tanpa mengira masa ia berlaku. Walau bagaimanapun, menggunakan perbandingan tarikh yang mudah boleh menjadi tidak cekap dan menghalang penggunaan indeks.
Pendekatan yang salah melibatkan pemilihan rekod yang fungsi tarikh digunakan pada lajur masa tarikh sepadan dengan hari yang dikehendaki, seperti:
SELECT * FROM tablename WHERE DATE(columnname) = '2012-12-25'
Pertanyaan ini memerlukan MySQL mengira tarikh bagi setiap baris, yang boleh menjadi intensif secara pengiraan dan perlahan untuk set data yang besar. Selain itu, penggunaan pengiraan dalam klausa WHERE menghalang pengoptimuman pertanyaan menggunakan indeks pada lajur datetime.
Sebaliknya, pendekatan yang lebih cekap adalah untuk menentukan julat nilai datetime yang mewakili sepanjang hari , memastikan bahawa ia termasuk permulaan dan akhir tarikh tertentu. Ini dicapai menggunakan klausa BETWEEN:
SELECT * FROM tablename WHERE columnname BETWEEN '2012-12-25 00:00:00' AND '2012-12-25 23:59:59'
Pertanyaan yang diubah suai ini membolehkan MySQL menggunakan indeks pada lajur datetime, meningkatkan prestasi dengan ketara. Adalah penting untuk ambil perhatian bahawa pendekatan ini memastikan bahawa rekod dari sepanjang hari dipilih, tanpa mengira masa ia berlaku.
Perhatikan bahawa dalam versi terbaru MySQL, adalah disyorkan untuk menggunakan sintaks berikut untuk mengelakkan potensi kekaburan:
SELECT * FROM tablename WHERE columnname >= '2012-12-25 00:00:00' AND columnname < '2012-12-26 00:00:00'
Dengan mengikuti garis panduan ini, anda boleh memilih rekod dengan cekap berdasarkan hari tanpa mengambil kira masa dalam MySQL, memastikan pangkalan data yang optimum prestasi.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Rekod MySQL dengan Cekap mengikut Hari, Mengabaikan Masa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!