redc0de
@redc0de

Выборка больших данных из базы сложными запросами?

Есть проект php/mysql. В системе есть моменты когда нужно делать достаточно сложные и большие запросы, с большой выборкой.
Запросы могут содержать больше 5 джойнов (иногда из одной и той же таблицы, которая работает как meta таблица с ключами и значениями), а также UNION select и так далее.

Когда нужно сделать выборку с 20к-25к записей, то это берет около 15 секунд, что в принципе не нормально.

Какие техники для оптимизации здесь можно использовать?
Какие варианты есть?

Может быть: Кеширование? Пагинация (добавляет проблем)?
  • Вопрос задан
  • 2703 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
EXPLAIN запроса, индексы. Иногда помогает замена JOIN на под запрос без зависимостей по данным (если результат база данных сама может закешировать). Так же если у вас проблемы с джойнами - спасают вьюшки.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
svd71
@svd71
есть еще чудесные операторы в селекте: limit и offset. Иногда они помогают.
select * from (
   select * from table1
   union
   select * from table2
) limit 100 offset 200
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
Дла начала надо понять, что никакой живой пользователь никогда не будет читать 20 000 записей на одной странице.

после этого можно продолжать оптимизацию
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы