Używam tej tabeli (MySQL/Silnik: MyISAM):Dlaczego GROUP BY na FULLTEXT INDEX jest tymczasowy?
CREATE TABLE `activities` (
`id_activity` int(10) unsigned NOT NULL AUTO_INCREMENT,
`id_doc` int(10) unsigned NOT NULL DEFAULT '0',
`node_id` tinytext NOT NULL,
`title` tinytext NOT NULL,
`name` tinytext NOT NULL,
`keywords` tinytext NOT NULL,
`page_type` tinytext NOT NULL,
`page_screen_id` tinytext NOT NULL,
`page_screen_question` tinytext NOT NULL,
PRIMARY KEY (`id_activity`),
KEY `name` (`name`(255)),
FULLTEXT KEY `node_id` (`node_id`,`title`,`name`,`keywords`,`page_type`,`page_screen_id`,`page_screen_question`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
(istnieje około 100 tysięcy wierszy)
Oto moje zapytanie:
EXPLAIN SELECT 1
FROM `activities`
GROUP BY `node_id`, `title`, `name`, `keywords`, `page_type`, `page_screen_id`, `page_screen_question`;
- id: 1
- select_type: SIMPLE
- tabela: działalność
- typ: WSZYSTKIE
- possible_keys: NULL
- klucz: NULL
- key_len: NULL
- Ref: NULL
- rzędy: 613011
- Extra: Korzystanie tymczasowe; Korzystanie filesort
Nie rozumiem, dlaczego moje zapytanie wykorzystuje tymczasowy ... a ja nie wiem jak tego uniknąć ... Dzięki
["W niektórych przypadkach MySQL jest w stanie zrobić znacznie lepiej i uniknąć tworzenia tabel tymczasowych za pomocą dostępu do indeksu."] (Http://dev.mysql.com/doc/refman/5.1/en /group-by-optimization.html) –
@DavidStarkey Czytałem ten temat, ale jest rzeczywiście indeks na moim 'GROUP BY' klauzula –
Czy istnieje jakiś powód tymczasowy jest problem? –