сейчас выполняется порядка 5 минут
Ссылка на запрос: https://pastebin.com/nzjWHb5k
Внизу написал какие индексы в таблицах существуют и сколько записей в таблицах
А что за идиома У вас такая в запросах Select min(Id) , name... group by name ? Вот из-за неё скорее всего и весь провал...
Потому что есть дубли в таблицах, которые сейчас по времени очень долго удалять
Ну так Удали дубли раз и навсегда и живи спокойно дальше
Заказчик не выделяет на это время)
У тебя запрос делается из одной таблицы, все остальные джойны не фильтрующие, они все левые, условия where У тебя тоже нет следовательно обрабатывается у тебя вся таблица импорт RAW. Это происходит всегда. Также всегда все остальные пять таблиц выжимаются через group by чтобы убрать дубликаты. Ещё раз повторяю это делается каждый раз над всеми строками таблиц. Чтобы этот запрос работал быстрее просто Нет поводов никаких То есть ему даже оптимизироваться негде у него нет никакого места где он мог бы работать быстрее
То есть грубо говоря этот запрос и так уже оптимально работает, верно?
Он скажем так работает с максимальной скоростью
Единственное что может добавить скорости этому запросу это выделить ещё больший кэш данных под все таблицы. Но у тебя вроде бы достаточно объемные таблицы, вряд ли на все данные хватит кэша
А ещё же это самое стал считать размеры таблиц посмотрел на заметочки что индексов нет и подумал Про индексы... так вот самый пиздец в том что даже если бы это эти индексы были они бы ни хрена не работали потому что тут они не применимы разве что My SQL догадается создать индексы на временной таблице с которым с которыми идут Join
Обсуждают сегодня