MySQL Query Datetime Performance

最近偶然发现有人在Stack Overflow提到Laravel检索日期的时候,最好使用WhereBetween 而不是WhereDate,于是实地做了测试,非常明显。

use App\Models\Ticket;
use Carbon\Carbon;

$now=Carbon::now();
//query in 6 million rows.
Ticket::whereDate('created_at',$now->toDateString())->count(); //1.2 sec

Ticket::WhereBetween('created_at',[
        $now->startOfDay(),
        $now->endOfDay()
    ])->count();                                               //0.04sec

显而易见,对时间区间进行查询的时候,最好直接对比区间值,where 'created_at' between 的效率比where date('created_at')优秀两个数量级。

你可能感兴趣的:(MySQL Query Datetime Performance)