Есть БД , содержащая в себе 10млн записей в одной таблице, и примерно 1,5 млрд в другой. И еще пара мелких(до 200 записей) таблиц. Это только для разработки, потом будет минимум в 20 раз больше.
Сервер - dedicated i7-7700k, 32GB RAM, SSD 2*256GB(потом добавим еще);
Запрос вида
SELECT DISTINCT acc.email, acc.password
FROM accounts acc JOIN accounts_status st ON acc.id_account=st.account_id
WHERE st.service_id in(1,5,8,7,122,147,80,58,77,60,55,15,22,14,16,78,75) AND st.status = 1
в dbForgeStudio выполняется примерно за 0,2 сек(правда, включен постраничный режим). В консоли mysql - ничего путного не выходит, а если добавить
LIMIT 1000000
то вывод происходит за минуту. При использовании
INTO OUTFILE
- ситуация аналогична.
Как я понимаю, абсолютно большую часть времени занимает не сам запрос, а именно вывод. В конечном итоге вся эта система должна выдавать txt файл, несколько миллионов строк - вполне нормальная длина.
Как реализовать быстрое(в адекватное время) извлечение из базы в текстовый файл?
---ОБНОВЛЕНО 1:47 02-09-2017
Похоже, дело таки в скорости работы самого запроса.
В dbForgeStudio переключил Результаты в виде таблицы на Результаты в виде текста и получил уже совсем другое время выполнения запроса. Теперь вопрос в том, как можно оптимизировать время выполнения. Думаю, для этого лучше будет создать новый вопрос.