Exploding
@Exploding
wtf?

Как получить список таблиц и полей без индекса (mysql), по которым происходит выбор?

Привет.
Суть вопроса: есть магазин на openCart, который использует бд, в которой крайней степени бардак в плане оптимизации производительности.
200+ таблиц, в которых часто даже нет primary key, не говоря уже про индексы.
Требуется ускорить работу сайта, поэтому я решил оптимизировать бд, а именно расставить индексы на полях, по которым происходит выборка данных.
Оптимистично я включил логирование медленных запросов без индекса - вывалилось порядка 140 запросов длиной с экватор и такой же глубиной вложенных подзапросов.
Сидеть разбирать вручную каждый запрос или через explain как-то наверно не совсем правильно, а точнее долго...
Возможно есть какие-то инструменты, которые могут как-то упростить это всё дело?
Что-то типа, закидываешь файл со списком запросов и получаешь список таблиц и полей по которым происходит выбор данных (пусть даже всех, без учёта наличия индекса).
  • Вопрос задан
  • 165 просмотров
Пригласить эксперта
Ответы на вопрос 2
@vitaly_il1
DevOps Consulting
Ответ написан
Комментировать
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Джинны и феи бывают только в сказках, дружок.

Сидеть разбирать вручную каждый запрос через explain - именно так это и делается.
Потому что само по себе механические впиливание индекса не решает вообще ничего.
Оптимизация запроса - это далеко совсем не только "создать индекс на поле, по которому идёт выборка"
Потому что этот индекс может не сработать
Потому что может быть нужен совсем другой индекс.
Потому что избыточные индексы могу наоборот замедлить приложение.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы