Rumah  >  Soal Jawab  >  teks badan

php - 比较年份,用substr截取前4位快,还是date('Y')快?

1问题描述:根据始末日期查询数据,由于数据库数据量大,用between and很慢,就添加了year,month,day字段,在比较年月日的时候有substr和date两种方法,两种都尝试过每次加载时间都在变化,也没找到相关的技术文章。理论上是两种速度都差不多,还是有相对快的方法?感谢每一个答题者。
2.相关代码片段:

//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 .= " and day = ".date('d',strtotime($startTime));
        }else{
            $str .= " and log_date between '$startTime' and '$endTime' ";
        }
    }else{
        $str .= " and log_date between '$startTime' and '$endTime' ";
    }
}else{
    $str .= " L.log_date between $startTime and $endTime";
}

//date

 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 .= " and month = ".date('n',strtotime($startTime));
            if(date('Ynd',strtotime($startTime)) == date('Ynd',strtotime($endTime))){
                $str .= " and day = ".date('d',strtotime($startTime));
            }else{
                $str .= " and log_date between '$startTime' and '$endTime' ";
            }
        }else{
            $str .= " and log_date between '$startTime' and '$endTime' ";
        }
    }else{
        $str = " where log_date between '$startTime' and '$endTime' ";
    }
滿天的星座滿天的星座2689 hari yang lalu771

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