Tôi đang sử dụng bảng này (MySQL/Động cơ: MyISAM):Tại sao GROUP BY trên INDEX INDEX được sử dụng tạm thời?
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;
(Có khoảng 100000 hàng)
Đây là câu hỏi của tôi:
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
- bảng: hoạt động
- loại: TẤT CẢ
- possible_keys: NULL
- chính: NULL
- key_len: NULL
- ref: NULL
- hàng: 613011
- Extra: Sử dụng tạm thời; Sử dụng filesort
Tôi không hiểu tại sao truy vấn của tôi sử dụng tạm thời ... và tôi không biết làm thế nào để tránh điều này ... Cảm ơn
['Trong một số trường hợp, MySQL có thể làm tốt hơn nhiều và tránh tạo bảng tạm thời bằng cách sử dụng truy cập chỉ mục.'] (http://dev.mysql.com/doc/refman/5.1/vi /group-by-optimization.html) –
@DavidStarkey Tôi đã đọc chủ đề này, nhưng thực sự có một chỉ mục trên mệnh đề 'GROUP BY' của tôi –
Có lý do tạm thời nào là vấn đề không? –