I'm trying to retrieve the "most viewed articles" and the number of times viewed, Any ideas for optimizing this?
I'm a little confused about the EXPLAIN results since the second *should* be faster according to my interpretation of the manual A couple explanations stats.vdate -> unix timestamp of the "stat" insert stats.action -> either a 1,2,3 1 = article view 2 = article printed 3 = article emailed zones are like categories - basically an adjacency model hierarchy simplified zones table CREATE TABLE zones ( id smallint(4) unsigned NOT NULL auto_increment, parent_id smallint(4) unsigned NOT NULL default '0', name varchar(60) NOT NULL default '', KEY parent_id (parent_id,id) ) TYPE=MyISAM; ------------------------------------------------------- The query ------------------------------------------------------- SELECT count(*) AS cnt, articles.id, articles.title, articles.pub_date, z1.urlname as zone_urlname, z2.urlname as zone_parent_urlname | FROM article_stats AS stats INNER JOIN articles ON (stats.article_id=articles.id) INNER JOIN zones AS z1 ON (stats.zone_id=z1.id) INNER JOIN zones AS z2 ON (z1.parent_id=z2.id) WHERE stats.vdate BETWEEN 1078300800 AND 1078511428 AND stats.action = 1 AND stats.site_id = 1 GROUP BY stats.article_id ORDER BY cnt DESC LIMIT 10; ------------------------------------------------------- This query executes in @ 1.7 seconds ------------------------------------------------------- ------------------------------------------------------- results for EXPLAIN ------------------------------------------------------- articles | ALL | PRIMARY | NULL | NULL | NULL | 25818 | where used; Using temporary; Using filesort | stats | ref | vdate,article_id,v_a | article_id | 4 | articles.id | 15 | where used | z1 | eq_ref | PRIMARY,parent_id | PRIMARY | 2 | stats.zone_id | 1 | where used | z2 | eq_ref | PRIMARY | PRIMARY | 2 | z1.parent_id | 1 | ------------------------------------------------------- v_a is a multi column index of vdate and article_id if this index is used the query executes in @ 2.6 seconds ------------------------------------------------------- Here are results for EXPLAIN (same query with USE INDEX (v_a)) ------------------------------------------------------- table | type | possible_keys | key | key_len | ref | rows | Extra | stats | range | vdate,article_id,v_a | v_a | 4 | NULL | 282217 | where used; Using temporary; Using filesort | articles | eq_ref | PRIMARY | PRIMARY | 4 | stats.article_id | 1 | where used | z1 | eq_ref | PRIMARY,parent_id | PRIMARY | 2 | stats.zone_id | 1 | where used | z2 | eq_ref | PRIMARY | PRIMARY | 2 | z1.parent_id | 1 | ------------------------------------------------------- Thanks much, olinux __________________________________ Do you Yahoo!? Yahoo! Search - Find what you’re looking for faster http://search.yahoo.com -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]