2017-07-06 11 views
1

私は現在Eloquent ORMを使ってLaravel php Frameworkを使ってアプリケーションを構築しています。私は結果を表示するのに非常に時間がかかるので、このクエリを最適化しようとしています。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

を私はあなたのデータベースのサイズが大きすぎると、あなたはすべての行と、クエリがレコードを取るどのくらい多くの時間 –

+0

がかかるため、このような理由SQLフィルタにそうで順序を使用することができると思いますあなたの 'mp'、' user'と 'conversations_in'テーブルでは? –

+0

mpには258264件のレコードが含まれています –

答えて

0

カラムに対してDBのインデックスを追加します。horodateur_fin、目に見える

関連する問題