为了账号安全,请及时绑定邮箱和手机立即绑定

laravel 如何优化一个表中的简单 where 查询

laravel 如何优化一个表中的简单 where 查询

PHP
猛跑小猪 2021-07-01 13:51:11
我有一个简单的 where 查询,它在 foreach 中重复了一段时间,实际上可能很多,所以这是我的查询:    for ($i = 0; $i < count($hasdate); $i++) {        $roomprice = RoomPricingHistory::             Where('accommodation_room_id', $hasroom[$i])            ->where('from_date', '<=', $hasdate[$i])            ->where('to_date', '>=', $hasdate[$i])            ->get()->sortBy('created_at');        $lastget = last($roomprice);        $last_price = last($lastget);        if ($last_price) {            $final_price[] = $last_price->sales_price;        } else {            $has_not_capacity = $hasdate[$i];        }    }所以每次运行它在望远镜中大约需要 2,509.10 毫秒,这是望远镜向我显示的作为在表上运行的查询的内容  select  *from  `room_pricing_histories`    where      `accommodation_room_id` = 3      and `from_date` <= "2019-06-01 09:00:00"      and `to_date` >= "2019-06-01 09:00:00"那么关于如何优化此查询的任何想法?
查看完整描述

1 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

好吧,根据经验 - 不要在循环内运行查询。


您可以whereIn()用于查询多个 ID


$roomIds = $hasroom // assume this has array of ids


$roomprice = RoomPricingHistory::

        whereIn('accommodation_room_id', $roomIds)

        ->where('from_date', '<=', $fromDate)

        ->where('to_date', '>=', $toDate)

        ->get()->sortBy('created_at');


查看完整回答
反对 回复 2021-07-09
  • 1 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信