UNION и большие таблицы

madproger[777]

Новичок
UNION и большие таблицы

Такой вопрос: есть много таблиц со статистикой, в каждой по несколько миллионов записей. Я хочу сделать запрос ко многим таблицам с использованием UNION - как отреагирует сервер БД на создание временной таблицы размером несколько десятков миллионов строк? Не рухнет ли он? Я бы не спрашивал если бы можно было проверить :) но думаю клиент будет не особо рад падению своего сервера БД, пусть и на несколько секунд ;)
 

madproger[777]

Новичок
Ну насколько я знаю - да
Как же он еще объеденит несколько таблиц? Причем по-умолчанию - он выбирает только уникальные записи.
Конечно я могу ошибаться, но по внутренней реализации - ничего особо подробного не нашел :( Просто запускал запрос и смотрел show proccesslist и смотрел, временная таблица создается причем два раза - на group by и на union

-~{}~ 25.09.05 13:34:

Насчет временных таблиц - да создает (посмотрел внутреннюю реализацию в MySQL internals documents)
А насчет того - чтобы кто-нить ответил..... :(

Ладно буду на локальной машине генерить таблицы, потом сообщу результат :)
 

DiTHER

bang bang
упасть - вряд ли.. к краш тестам mysql намана относится :)
Мы делали накладывание трех таблиц в каждой примерно по 25 тысяч записей (итого 25000^3 что есть много (хе пробежался по 16 тысячам миллиардов записей :)) :)) с помощью Union'ов.. самый отвратительный момент в этом - часа 2 было абсолютно непонятно чем собственно в данный момент mysql занят. Т.е. даже предсказать примерный срок окончания запроса не представляется возможным, но все равно это в очень и очень много раз шустрее чем делать кучу запросов на сервак..

Можно чуть чуть облегчить задачу серву - разумно распихать все по созданным временным таблицам, скажем, с движком memory (heap). (тока не удивляйся сообщению table xx is full - по умолчанию размер таблиц в памяти лимитирован 16мб на каждую, но параметр изменяем :) (max_heap_table_size)).
 
Сверху