Andy: Optimierung Tabellen bzw. Query

Beitrag lesen

Hallo!

Nachdem ich mich ja für etwaige Optimierungen interessiere:

SELECT DISTINCT YEAR(date) AS year, MONTH(date) AS month , COUNT(DISTINCT pics_categories.id) AS num, (MAX(pics_entries.filename)>$newerAs) AS new FROM pics_categories LEFT JOIN pics_entries ON pics_entries.catid = pics_categories.id WHERE pics_categories.status & 0x01=0 GROUP BY year, month ORDER BY year DESC, month DESC, filename


> Was sagt EXPLAIN dazu?  

EXPLAIN bringt folgendes:  
table:pics\_categories  
type: ALL (leider)  
possible\_keys: NULL (weiß nicht, was ich nehmen soll)  
key: NULL (logisch)  
key\_len: NULL (logisch)  
ref: NULL (auch logisch)  
rows: 74  
Extra: Using where; Using temporary; Using filesort (Mist, mist, mist \*g\*)  
  
table: pics\_entries  
type: ref  
possible\_keys: catid  
key: catid  
key\_len: 4  
ref: pics\_categories.id  
rows: 55  
Extra:  
  
Keine Ahnung wie ich das wegbringe.  
Hier noch die Definitionen der Tabellen:  
~~~sql
CREATE TABLE `pics_categories` (  
  `id` int(11) NOT NULL auto_increment,  
  `tag` varchar(6) NOT NULL default '',  
  `description` varchar(128) NOT NULL default '',  
  `place` varchar(128) default NULL,  
  `date` datetime default NULL,  
  `status` tinyint(4) NOT NULL default '0',  
  PRIMARY KEY  (`id`),  
  UNIQUE KEY `tag` (`tag`)  
) TYPE=MyISAM;  
  
CREATE TABLE `pics_entries` (  
  `id` int(11) NOT NULL auto_increment,  
  `filename` varchar(255) NOT NULL default '',  
  `catid` int(11) NOT NULL default '0',  
  `hits` int(11) NOT NULL default '0',  
  `status` tinyint(4) NOT NULL default '0',  
  PRIMARY KEY  (`id`),  
  UNIQUE KEY `filename` (`filename`),  
  KEY `catid` (`catid`)  
) TYPE=MyISAM;

Danke für jeden Tipp.
BTW: Mit verschiedenen Indizes hab ich schon experimentiert, aber keinen Erfolg gehabt. Und das ORDER-BY-Optimierungszeug von der MySQL-Dokumentationsseite blick ich scheinbar nicht ganz.

Gruß,
Andy