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
Post a Comment