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