最近偶然发现有人在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')
优秀两个数量级。
网友评论