Как обрабатывать более 10 миллионов записей в MySQL только для операций чтения.
У меня есть две таблицы, одна из которых - company
, в которой хранятся записи о компании, то есть ее название и предоставляемые ей услуги, то есть 2 столбца и около 3 миллионов записей, а другая таблица employee
содержит около 40 столбцов и около 10 миллионов записей. При попытке извлечь данные даже простые запросы, такие как
Employee::paginate(100);
//In terms of mysql it
//select count(*) as aggregate from 'employee';
//Select * from 'employee' limit 100 offset 0;
раньше занимало около 30 с, а теперь - как всегда.
Если я хочу выполнить поиск, применить фильтр или присоединиться к двум таблицам, т. Е. company
и employee
, то иногда это работает, а иногда происходит сбой и выдается множество ошибок / предупреждений в журналах сервера SQL.
Может кто-нибудь, пожалуйста, скажите мне, как я могу обработать этот объем записей более эффективно, не вызывая распад сервера SQL, особенно во время большого трафика
В настоящее время у меня есть только первичные ключи, то есть идентификаторы и объединенные идентификаторы индексируются.
Это своего рода двойное сравнение постов со всеми подобными запросами, которые были сделаны на SO, но они мне не очень помогли.
Вопросы, за которыми я следовал на SO
- Лучшее хранилище данных для миллиардов строк
- Обработка очень больших данных с помощью mysql
- https://dba.stackexchange.com/questions/20335/can-mysql-reasonably-perform-queries-on-billions-of-rows
- Является ли InnoDB (MySQL 5.5.8) правильным выбором для многомиллиардных строк?
- Насколько большой может быть база данных MySQL до начала снижения производительности
- Обработка миллионов записей в массивах из MySQL в PHP?