【发布时间】:2018-05-17 15:20:22
【问题描述】:
我在这里找到了一些我遵循的答案,发现它在本地工作,所以我推到我们的测试框,我发现这个特定的数据库查询通过进入 mysql 和 @987654321 持续超过 1300 秒@它挂在copying to tmp table
它是 Laravel 4.2,相当古老的遗留代码,我只是想在开发更高版本时稳定它。下面的代码根据 api_call 大约每 30 秒重复一次,这一切都很好,除了它没有完成并收到 504 Gateway Time-out 我觉得我正在做一些递归的事情,或者在这里搜索一个非常大的数据库会是一个问题吗?
我想要做的只是运行一个 groupBy,但不是按第一个分组,而是按最后一个分组,以防其他详细信息被更新。
我们将非常感谢您提供的任何帮助。
public function api_prevnames()
{
if (Auth::user()->repeat_vistor == 'Y') {
$names = DB::table('visitors')
->select(DB::raw('first_name,last_name,email,car_reg,OPTIN,vistor_company'))
->where('user_id', Auth::user()->id)
->where('hidden', 0)
->where('email', '<>', '')
->whereRaw('id IN (select MAX(id) FROM visitors GROUP BY first_name, last_name, email)')
->get();
}
return JSONResponseGenerator::successResponse($names->toArray());
}
生成此查询
select first_name,last_name,email,car_reg,OPTIN,vistor_company from `visitors` where `user_id` = '439' and `hidden` = '0' and `email` <> '' and id IN (select MAX(id) FROM visitors GROUP BY first_name, last_name, email)
之前的代码运行不到几秒钟,我在下面添加了这些代码:
$names = DB::table('visitors')
->select(DB::raw('first_name,last_name,email,car_reg,OPTIN,vistor_company'))
->where('user_id', Auth::user()->id)
->where('hidden', 0)
->where('email', '<>', '')
->groupBy('first_name', 'last_name', 'email')
->get();
【问题讨论】:
标签: php mysql sql laravel eloquent