Sample Header Ad - 728x90

Optimize Query with Derived Table

4 votes
4 answers
5148 views
I have the following query select ps.id, ps.title , IFNULL(s.likes,0) as num_likes , IFNULL(s.comments,0) as num_comments , IFNULL(s.ratings,0) as num_ratings , IFNULL(s.views,0) as num_views , IFNULL(s.avg_rating,0) as avg_rating from ps left outer join ( select presiid, sum(views) as views, sum(likes) as likes, sum(ratings) as ratings, avg(ratings) as avg_rating, sum(downloads) as downloads, sum(comments) as comments, sum(embeds) as embeds, sum(shares) as shares from tblstatistics group by presiid ) s on s.presiid = ps.id where ps.active = 1 order by datepublished desc LIMIT 0, 12 Running EXPLAIN on the above shows this 1 PRIMARY ps ref active active 1 const 402 Using temporary; Using filesort 1 PRIMARY ALL NULL NULL NULL NULL 334 2 DERIVED tblstatistics ALL NULL NULL NULL NULL 2643 Using temporary; Using filesort As you can see this is not good....tblstatistics is not using any indexes and is scanning the entire table. How can I optimize this query and make it use indexes? There are over 100,000 rows in the DB on the production DB where this query runs. Any help will be appreciated....
Asked by Anuj Gakhar (141 rep)
Feb 2, 2012, 02:56 PM
Last activity: Mar 21, 2013, 01:34 PM