optimization - Optimize slow mysql query -


i'm using following query select list of users, query slow. explain me how can optimize query?

thanks in advance.

greetings fred.

    select       crmuser.userid,      crmuser.userfirstname,      crmuser.userlastname,      crmuser.usersekse,      timestampdiff(year, crmuser.userbirthday,now()) age,      crmuser.usertelephone,      crmuser.useremail,                               crmuser.usercity,      crmuser.userplaceofbirth,      content_city.province,       max(date_format(crmconnect.connectstamp, '%y-%m-%d')) laatstgesolliciteerd,     timestampdiff(week, max(crmconnect.connectstamp),now()) laatsteactiviteit,     count(distinct crmconnect.connectparent) jobs,                                    sum(if(crmconnect.connectextra = 'interest', 1, 0)) interest,     sum(if(crmconnect.connectextra = 'select', 1, 0)) prospect,     sum(if(crmconnect.connectextra = 'winner', 1, 0)) winner  crmuser  left join content_city on (content_city.cityname = crmuser.usercity) left join crmconnect on (crmconnect.connectchild = crmuser.userid)  left join crmjob on (crmjob.jobid = crmconnect.connectparent)         crmuser.userid not in (111, 222, 333, 444) ,     crmuser.useractive = 1 ,      crmuser.userextra = 0 ,      crmconnect.connecttype = 'user' ,      crmconnect.connectstamp != '0000-00-00 00:00:00'   group userid   order userid asc  limit 3000 

you can eliminate join jobs (from can tell). can simplify of logic, although won't have impact on performance. query:

select u.userid, u.userfirstname, u.userlastname, u.usersekse,         timestampdiff(year, u.userbirthday, now()) age,         u.usertelephone, u.useremail, u.usercity, u.userplaceofbirth,         cc.province,         max(c.connectstamp) laatstgesolliciteerd,        timestampdiff(week, max(c.connectstamp), now()) laatsteactiviteit,        count(distinct c.connectparent) jobs,                                       sum(c.connectextra = 'interest') interest,        sum(c.connectextra = 'select') prospect,        sum(c.connectextra = 'winner') winner crmuser u left join      content_city cc      on cc.cityname = u.usercity left join      crmconnect c      on c.connectchild = u.userid u.userid not in (111, 222, 333, 444) ,       u.useractive = 1 ,        u.userextra = 0 ,       c.connecttype = 'user' ,        c.connectstamp <> '0000-00-00 00:00:00'  group u.userid ; 

you want indexes. suggest crmuser(useractive, userextra, userid), content_city(cityname, province), , crmconnect(connectchild, connecttype, connectstamp, connectparent, connectextra).


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -