Имеется таблица на 12 млн. строк.
CREATE TABLE `shingles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`shingle` text NOT NULL,
`count` int(11) NOT NULL,
`used` tinyint(1) DEFAULT NULL,
`stop` tinyint(1) DEFAULT NULL,
`date` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `shingle` (`shingle`(255)) USING BTREE,
KEY `count` (`id`),
FULLTEXT KEY `shingle_fulltext` (`shingle`)
) ENGINE=InnoDB AUTO_INCREMENT=11707635 DEFAULT CHARSET=utf
Следующий запрос выполняется в районе 20с.
select `t1`.* from
(select * from `shingles`
where MATCH (shingle) AGAINST ('слово' IN BOOLEAN MODE)) as t2
inner join `shingles` as `t1` on `t1`.`id` = `t2`.`id`
order by `t1`.`count` desc limit 5
Чем больше результатов в полнотекстовом поиске, тем медленнее...
Как можно оптимизировать? Без "order by" все летает.