php - 比较年份,用substr截取前4位快,还是date('Y')快?
滿天的星座
滿天的星座 2017-05-16 13:09:05
0
6
770

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

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!