SQL запрос из нескольких ARCHIVE таблиц с общим ORDER BY?
Приветствую! Пытаюсь определится с будущей схемой хранения логов действий пользователей, взглянул на ARCHIVE и возник вопрос из сабжа. Будет 6 ARCHIVE таблиц каждая с датой в названии (последние 6 мес.), так вот как проводить потом выборку из них для просмотра лога, так чтобы ORDER BY был по всем данным из всех 6 таблиц? Или просто указание одинакового ORDER BY во всех 6 запросах с UNION будет работать так как я и ожидаю? И не будет ли такая выборка слишком тормозной? 1-10 млн. записей за каждый мес. (в каждой таблице). Или лучше тогда использовать MyISAM, чтобы были индексы и выборка шла быстрее, но тогда объём будет около 10 ГБ за 6 мес.
Acrhive база это всегда full table scan. Зато они очень быстрые на добавление. Любое выражение ORDER BY на такой таблице это merge sort со сливом во временные файлы кучи данных (по сути построение индекса на лету), а значит долго. UNION ALL не будет будет сортировать несколько выборок сразу, он просто соединяет результаты. С другой стороны, все ваши таблицы содержат данные только одного интервала, а значит все записи таблицы со старшей датой будут старше записей любой другой младшей таблицы. Тогда просто UINION ALL всех таблиц в порядке даты даст вам нужный результат.
Если данные не будут модифицироваться, то можете попробовать ALTER TABLE ORDER BY. Тогда вам останется сделать только union и выставить таблицы в правильной последовательности