Задать вопрос
@kiddle

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

Здравствуйте, по работе столкнулся с такой задачей, что мне необходимо перенести данные с одной таблицы в другую. К слов на работе есть проекты, которые имеют свои базы данных с аналагичной структурой. Ну так вот процесс INSERT у меня весит сутки, хотя запрос вроде и простой. В то же время тот же запрос на других базах выполняется минут за 20 (при условии, что нужно перенести почти 2 миллиона строк)
SELECT 
 	1, 
 	ap.`sub_id`, 
 	sc.Sub_Class_ID , 
 	ap.`sort`, 
 	CONCAT(ap.`part_picture_id`, '-', ap.`sub_id`), 
 	ap.`id`, 
 	ap.`partname`, 
 	NOW() 
FROM `Acat_Parts` ap 
LEFT JOIN Sub_Class sc on ap.sub_id = sc.Subdivision_ID

Как получилось выяснить весь процесс виснет из-за
LEFT JOIN Sub_Class sc on ap.sub_id = sc.Subdivision_ID

Раньше этот запрос был вида
(SELECT `Sub_Class_ID` FROM `Sub_Class` WHERE `Subdivision_ID`=`sub_id`)

и если убрать обращение к таблицу Sub_Class, то все происходит очень быстро.

Никак не могу найти причину, почему в других проектах аналогичный запрос работает шустро, а в текущем зависает на сутки. Может кто-то сталкивался с подобным?
  • Вопрос задан
  • 135 просмотров
Подписаться 1 Простой 17 комментариев
Решения вопроса 1
mayton2019
@mayton2019
Bigdata Engineer
Из быстрых советов - проверь что Subdivision_ID проиндексирован.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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