Всем привет!
Есть 700 таблиц по 5М записей, каждая таблица весит по 200Мб.
Структура таблиц следующая:
CREATE TABLE `table` (
`id` int(11),
`id2` int(11),
`id3` int(11),
`p1` int(11),
`p2` int(11),
KEY `id` (`id`)
) ENGINE=MyISAM;
К каждой из этих таблиц применяется следующий запрос:
SELECT `id1`, `id2`, `id3`, `p1`, COUNT(`p1`) AS `count`, `p2`
FROM `table`
GROUP BY `id1`, `id3`, `p1`, `p2`
Результат запроса отправляется INSERT'ом в другую специальную таблицу.
Проблема заключается во времени исполнения запроса, пример 200 сек. Таким образом на обработку всех 700 таблиц мне понадобиться 38 часов. Хотелось бы сократить это время до 1-3 часов.
Вопрос: есть ли способы уменьшить время запроса?
Предпринятые меры:
1. Чтобы трафик результатов запросов не гонять между серверами, php-скрипт разместил на сервере БД.
ЗАДАЧА РЕШЕНА
Всем спасибо за участие, воспользовался функцией GROUP_CONCAT(), что уменьшило время выборки 4 секунд.