Php Laravel mysql查询关闭服务器

Php Laravel mysql查询关闭服务器,php,mysql,laravel,Php,Mysql,Laravel,我目前正在用LaravelPHP框架使用雄辩的ORM构建一个应用程序。我只是想优化这个查询,因为显示结果需要很长时间 这是代码,我如何优化它 $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.horodat

我目前正在用LaravelPHP框架使用雄辩的ORM构建一个应用程序。我只是想优化这个查询,因为显示结果需要很长时间

这是代码,我如何优化它

$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秒钟。有人能帮我吗?

为列添加db索引:HoroDatauer\u fin,visible

我认为您的数据库太大,您可以使用order by,因此,由于这个原因,sql筛选所有行,您的查询需要很多时间在
mp
中有多少记录,
user
conversations\u在
表中?mp包含258264 recordsTry安装laravel调试栏,并选择查询选项卡,该选项卡将显示根据SQL标准运行的任何查询的优化建议。当您使用oderby条件时,它将过滤表中的所有行(此处…258264)并根据您的查询得到结果(这里得到10行),因此由于这个原因,查询需要花费很多时间。所以你们可以先查询得到10条记录,然后按条件设置顺序