【发布时间】:2021-12-14 08:04:40
【问题描述】:
我看过类似的问题,我得到的答案是在我的查询中设置限制,我这样做了。
这里是查询
$sql = DB::table('inventorysku_tb as isku')
->leftJoin('inventorytrackingmodules_tb as itm', function ($join) {
$join->where('itm.coID', '=', 4)
->whereBetween('itm.effectiveDate', ['2021-05-01', '2021-05-31'])
->on('itm.skuID', '=', 'isku.ID');
})
$sql->paginate(25);
return $sql;
这个查询大约需要 17 秒才能运行,现在如果我在上面的查询上运行 ->toSql() 并将其粘贴到 phpmyadmin(更改 ? 值)
select *
from `inventorysku_tb` as `isku`
left join `inventorytrackingmodules_tb` as `itm`
on `itm`.`coID` = 4
and `itm`.`effectiveDate` between '2021-05-01' and '2021-05-31'
and `itm`.`skuID` = `isku`.`ID`
这个在phpmyadmin中运行只需要0.2秒...
laravel代码上就这些了,上面没有其他代码了……
另一个奇怪的事情是,如果我在 laravel 中将左连接改为内连接,查询现在很快(878 毫秒)..
【问题讨论】:
-
嘿,你可以尝试一些事情。首先,您可以使用Laravel Debugbar,它将显示在每个页面上运行的查询,并使您更容易调试。另一件可能有帮助的事情是在您的表上添加索引。
标签: php mysql sql laravel phpmyadmin