Laravel在表48k记录中选择慢查询

时间:2017-08-08 14:53:17

标签: php mysql laravel

我正在尝试进行购买统计。所以for-each就像这样:

for ($month = 0; $month <= $maxMonth; $month++) {

我在Laravel中做了以下查询:

$mainData = DB::table('table')
    ->where('a', $id)
    ->where('b', '>', 0)
    ->where('c', '>', 0)
    ->orderBy('d', 'DESC')
    ->where('a', '>=', DB::raw('UNIX_TIMESTAMP((LAST_DAY(DATE_SUB(NOW(), INTERVAL ' . intval($month) . ' MONTH))+INTERVAL 1 DAY)-INTERVAL 1 MONTH)'))
    ->where('a', '<', DB::raw('UNIX_TIMESTAMP(LAST_DAY(DATE_SUB(NOW(), INTERVAL ' . intval($month) . ' MONTH))+INTERVAL 1 DAY)'))
    ->get();

我更改了行的名称,因为我认为这不是重要的信息。 此外,完成这6个查询需要10-15秒。

我认为这非常慢,因为当我将->get()更改为 - >toSql()并在phpmyadmin中进行查询(使用相同的SQL)时,需要几毫秒。

为什么这个Laravel数据库这么慢?

0 个答案:

没有答案