php - Untuk membandingkan tahun, adakah lebih pantas menggunakan substr untuk memintas 4 digit pertama, atau lebih pantas menggunakan date('Y')?
滿天的星座
滿天的星座 2017-05-16 13:09:05
0
6
812

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' ";
    }
滿天的星座
滿天的星座

membalas semua(6)
给我你的怀抱

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!

过去多啦不再A梦

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan