its about the following query.
EXPLAIN SELECT phrase, infinitiv
FROM `dict_verbs_all` `t`
INNER JOIN `dict_verbs_all_language` `verbsGerman_c`
ON (`t`.`id`=`verbsGerman_c`.`verb_id`)
INNER JOIN `dict_verbs_german` `c`
ON (`c`.`id`=`verbsGerman_c`.`verb_language_id`)
WHERE (t.phrase LIKE 'spie%' AND t.language=1)
GROUP BY infinitiv
LIMIT 5
It uses all the time filesort
Using where; Using temporary; Using filesort
Here are my columns
CREATE TABLE `dict_verbs_all` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`phrase` varchar(30) NOT NULL,
`language` smallint(1) DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `uPhraseLanguage` (`phrase`,`language`)
) ENGINE=MyISAM AUTO_INCREMENT=337740 DEFAULT CHARSET=utf8;
CREATE TABLE `dict_verbs_all_language` (
`id` int(1) NOT NULL AUTO_INCREMENT,
`verb_id` int(11) DEFAULT NULL,
`verb_language_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `U_verb_conjugation` (`verb_id`,`verb_language_id`),
KEY `verb_id` (`verb_id`),
KEY `conjugation_id` (`verb_language_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `dict_verbs_german` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`infinitiv` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uInfinitiv` (`infinitiv`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
I have an index on all relevant columns but its not beeing used and I don't know why. I hope you can help me how to eliminate using temporary and using filesort

LIMIT 5means it will just return 5 rows max. Is it still slow? – ypercube Jan 10 at 20:59