optimization - Optimize mysql query statement -


how should optimize query?

explain extended select      cm . *,     u1.firstname u1firstname,     u1.lastname u1lastname,     u2.firstname u2firstname,     u2.lastname u2lastname,     count(*) count     chatmessage cm         left join     users u1 on cm.userid = u1.userid         left join     users u2 on cm.friendid = u2.userid     (cm.userid in (292 , 289)) , (cm.friendid in (292 , 289)) order cm.dateadded desc; 

explain:

1 simple cm fk_chatmessage_users1,fk_chatmessage_users2 238 59.24 using where
1 simple u1 eq_ref primary primary 4 mhware.cm.userid 1 100.00
1 simple u2 eq_ref primary primary 4 mhware.cm.friendid 1 100.00

problem is: chatmessage using foreign keys, 1 on userid , 1 on friendid pointing userid in users table.

on explain can see not know how use index right way. if im adding new index of (userid, friendid) or/and (friendid, userid) has 4 possibilities , not use of them.

this statement running ever 1 second , dumps slow-query-log-file full of junk.

thanks.

can try , add 2 indexes. 1 on cm.userid , on cm.friendid? dont quite understand foreign key set because using left joins, saying user can possibly not exist? why use foreign keys?


Comments

Popular posts from this blog

Change php variable from jquery value using ajax (same page) -

Pull out data related to my apps from Android Play Store and iOS App Store -

How can I fetch data from a web server in an android application? -