I'm currently building an application with Laravel php Framework using Eloquent ORM. Im just trying to optimize this query because it takes very long time to display results.
Here's the code, How can i optimze it?
$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);
I have no idea why this work so slow and it takes like 10 seconds to load page. Can somebody help me out?