2017-07-06 120 views
1

我目前正在用Laravel php Framework使用Eloquent ORM构建一个应用程序。我只是试图优化这个查询,因为它需要很长时间来显示结果。Laravel mysql查询关闭服务器

下面是代码,我该如何优化它?

$messages = DB::table('mp as m1') 
      ->select(DB::raw('m1.id as id, m1.user_id, m1.titre, m1.titremd5, content, m1.vu, users.name, users.slug, users.avatar, m1.horodateur, m1.id_conversation')) 
      ->join('users', 'm1.user_id', '=', 'users.id') 
      ->whereRaw('id_conversation IN (SELECT id FROM conversations_in WHERE user_id = '.Auth::user()->id.' AND visible=1 AND horodateur_fin = "") AND m1.id = (SELECT MAX(mp.id) FROM mp WHERE mp.id_conversation = m1.id_conversation)') 
      ->orderBy('m1.id', 'DESC') 
      ->paginate(10); 

我不知道为什么这项工作如此缓慢,需要10秒钟才能加载页面。有人可以帮我吗?

+0

我觉得你的数据库规模过大,你可以通过这样由于这个原因SQL过滤器中使用命令所有行和您的查询需要很多时间 –

+0

多少记录取在你的'mp','user'和'conversations_in'表中? –

+0

mp包含258264记录 –

回答

0

添加数据库索引列:horodateur_fin,可见