Индексы при группировке Подскажите чайнику.
Мы с моим форумом тормозим.
Задача - построить список тем с количеством ответов в теме и датой последнего ответа.
и то и другое использует временную таблицу, а я не понимаю - почему.
все сообщения в одной таблице, в поле root лежит id темы.
SELECT root FROM bor GROUP BY root ; использует индекс.
а SELECT root, id FROM bor GROUP BY root ; - уже нет
получается, что временная используется, если запросить хоть что-то, кроме группируемого поля
да, и вы будете смеяться, 3.23.57-log. но на 5.0.33 то же самое
Мы с моим форумом тормозим.
Задача - построить список тем с количеством ответов в теме и датой последнего ответа.
и то и другое использует временную таблицу, а я не понимаю - почему.
все сообщения в одной таблице, в поле root лежит id темы.
Код:
mysql> explain SELECT root, count(id) FROM bor GROUP BY root ;
+-------+------+---------------+------+---------+------+------+-----------------+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+-------+------+---------------+------+---------+------+------+-----------------+
| bor | ALL | NULL | NULL | NULL | NULL | 100 | Using temporary |
+-------+------+---------------+------+---------+------+------+-----------------+
mysql> explain SELECT root, max(date) FROM bor GROUP BY root;
+-------+------+---------------+------+---------+------+------+-----------------+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+-------+------+---------------+------+---------+------+------+-----------------+
| bor | ALL | NULL | NULL | NULL | NULL | 100 | Using temporary |
+-------+------+---------------+------+---------+------+------+-----------------+
CREATE TABLE `bor` (
`id` int(11) NOT NULL auto_increment,
`date` datetime default NULL,
`title` varchar(64) default NULL,
`author` varchar(32) default NULL,
`body` text,
`root` int(11) default NULL,
PRIMARY KEY (`id`),
KEY `root` (`root`),
KEY `date` (`date`)
)
а SELECT root, id FROM bor GROUP BY root ; - уже нет
получается, что временная используется, если запросить хоть что-то, кроме группируемого поля
да, и вы будете смеяться, 3.23.57-log. но на 5.0.33 то же самое