2017-07-06 1 views
1

Ich baue gerade eine Anwendung mit Laravel PHP-Framework mit Eloquent ORM. Ich versuche nur, diese Abfrage zu optimieren, da die Anzeige der Ergebnisse sehr lange dauert.Laravel mysql Abfrage heruntergefahren Server

Hier ist der Code, wie kann ich es optimieren?

$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); 

Ich habe keine Ahnung, warum dies so langsam arbeiten und es dauert 10 Sekunden, um Seite zu laden. Kann mir jemand helfen?

+0

Ich denke, Ihre Datenbank zu groß ist und Sie können so verwenden, um aus diesem Grund SQL-Filter alle Zeilen und Ihre Abfrage –

+0

viel Zeit in Anspruch nehmen Wie viel Rekord nehmen in deinen 'mp',' user' und 'conversations_in' Tabellen? –

+0

mp enthält 258264 Datensätze –

Antwort

0

legen db Indizes für Spalten: horodateur_fin, sichtbar