cari

Rumah  >  Soal Jawab  >  teks badan

php - Untuk membandingkan tahun, adakah lebih pantas menggunakan substr untuk memintas 4 digit pertama, atau lebih pantas menggunakan date('Y')?

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

membalas semua(6)saya akan balas

  • 给我你的怀抱

    给我你的怀抱2017-05-16 13:11:05

    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

    balas
    0
  • 巴扎黑

    巴扎黑2017-05-16 13:11:05

    Adakah indeks dan struktur jadual telah dioptimumkan? Jika tidak, mengoptimumkannya terlebih dahulu akan meningkatkan kelajuan.

    balas
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:11:05

    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

    balas
    0
  • 阿神

    阿神2017-05-16 13:11:05

    Tidak begitu biasa dengan PHP, tetapi jika pangkalan data mempunyai jumlah data yang besar, anda harus menyemak pernyataan pertanyaan untuk mencipta indeks untuk pengoptimuman.

    balas
    0
  • 漂亮男人

    漂亮男人2017-05-16 13:11:05

    Siarkan pernyataan sql dan tambah indeks!

    balas
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 13:11:05

    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

    balas
    0
  • Batalbalas