1 Penerangan masalah: Data pertanyaan berdasarkan tarikh permulaan dan tamat Oleh kerana jumlah data pangkalan data yang banyak, menggunakan antara dan sangat perlahan, jadi kami menambah medan tahun, bulan, hari Terdapat dua kaedah, substr dan tarikh, apabila membandingkan tahun, bulan dan hari saya mencuba kedua-duanya dan masa pemuatan berubah setiap kali, dan saya tidak menemui sebarang artikel teknikal yang berkaitan. Secara teori, adakah kedua-dua kelajuan itu serupa, atau adakah terdapat kaedah yang lebih pantas? Terima kasih kepada semua yang menjawab.
2. Coretan kod yang berkaitan:
//substr
if(substr($startTime,0,4) == substr($endTime,0,4)){
$str .=" L.year = ".substr($startTime,0,4);
if(substr($startTime,4,2) == substr($endTime,4,2)){
$str .= " and L.month = ".substr($startTime,4,2);
if(date('Ynd',strtotime($startTime)) == date('Ynd',strtotime($endTime))){
$str .=" dan hari = ".date('d',strtotime($startTime));
}lain{
$str .= " dan log_date antara '$startTime' dan '$endTime' ";
}
}lain{
$str .= " dan log_date antara '$startTime' dan '$endTime' ";
}
}lain{
$str .= "L.log_date antara $startTime dan $endTime";
}
//tarikh
if(date('Y',strtotime($startTime)) == date('Y',strtotime($endTime))){
$str = " where year = ".date('Y',strtotime($startTime));
if(date('Yn',strtotime($startTime)) == date('Yn',strtotime($endTime))){
$str .=" dan bulan = ".date('n',strtotime($startTime));
if(date('Ynd',strtotime($startTime)) == date('Ynd',strtotime($endTime))){
$str .=" dan hari = ".date('d',strtotime($startTime));
}lain{
$str .= " dan log_date antara '$startTime' dan '$endTime' ";
}
}lain{
$str .= " dan log_date antara '$startTime' dan '$endTime' ";
}
}lain{
$str = " di mana tarikh_log antara '$startTime' dan '$endTime' ";
}
Sama ada anda menggunakan substr untuk memintas 4 digit pertama atau tarikh('Y'), anda hanya melaksanakan PHP Abaikan perbezaan masa dalam PHP adalah sama dan tidak akan menjejaskan kecekapan pangkalan data.
Anda harus menyiarkan pernyataan sql yang perlu dilaksanakan supaya semua orang dapat melihat sama ada ia boleh dioptimumkan
Adakah indeks dan struktur jadual telah dioptimumkan? Jika tidak, mengoptimumkannya terlebih dahulu akan meningkatkan kelajuan.
Saya rasa anda patut mencuba terus menulis carian tahun untuk melihat sama ada terdapat peningkatan prestasi. Dalam kes ini, hanya lulus nilai yang anda mahu terus dari meja depan
Tidak begitu biasa dengan PHP, tetapi jika pangkalan data mempunyai jumlah data yang besar, anda harus menyemak pernyataan pertanyaan untuk mencipta indeks untuk pengoptimuman.
Siarkan pernyataan sql dan tambah indeks!
Tiada perubahan dalam kecekapan pelaksanaan kedua-dua kaedah ini hanya menyambungkan pernyataan sql Anda harus mencari cara untuk mengoptimumkan daripada pangkalan data atau pernyataan sql