powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Жутко замедлилось выполнение запроса
9 сообщений из 9, страница 1 из 1
Жутко замедлилось выполнение запроса
    #38881576
Bekass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
один и тот же запрос за 1 ночь стал жутко тормозить с 1с до 3 мин

Вот собственно сам запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT task_num, name_project, name_task,process.name_process,projects.id_project, task.id_task, process.id_process,process.code_unit,class_unit.name as cname,
  process.cost,process.quantity_all,  '' as okato_name , count(tovar_p.id_process) as tovar_p_name,
   if(task_date_plan.date_plan <'1900:00:00' ,null,task_date_plan.date_plan) as dt1,
          if(task_date_plan1.date_plan <'1900:00:00' ,null,task_date_plan1.date_plan)   as dt2, process.file1m, count(tovar.id_process) as tovar,co.name_company as coname
  FROM (class_union,projects ,task,class_union_task)  
  inner JOIN (process,task_process)  ON (process.id_process = task_process.id_process AND task_process.id_task= task.id_task and process.parent_process =0 )
  left join process as tovar_p on  (process.id_process=tovar_p.parent_process)
  left join class_unit on number_code = process.code_unit

         left join (process as tovar, company as co) on co.id_company =tovar.id_company and  process.id_process=tovar.parent_process and tovar.id_project_product >0
  left join task_date_plan on task_date_plan.id_task_date_plan = process.date_begin_process
         left join task_date_plan as task_date_plan1 on task_date_plan1.id_task_date_plan = process.date_end_process
  WHERE   class_union.id_class_union= class_union_task.id_class_union and process.type_process=0 AND class_union_task.id_task=task.id_task  AND task.id_project = projects.id_project 
  AND class_union.id_company=@c and class_union.id_user =@u 
  GROUP BY process.id_process,task.id_task
         order by process.id_process




А это EXPLAIN к нему
...
Рейтинг: 0 / 0
Жутко замедлилось выполнение запроса
    #38881582
Bekass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Во вложении скрин explain. таблицы все innoDB

Спасибо за помощь!
...
Рейтинг: 0 / 0
Жутко замедлилось выполнение запроса
    #38881620
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Смешались в кучу кони, люди..."
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
SELECT task_num
 ,name_project
 ,name_task
 ,pr.name_process
 ,pj.id_project
 ,tk.id_task
 ,pr.id_process
 ,pr.code_unit
 ,cu.name as cname
 ,pr.cost
 ,pr.quantity_all
 ,'' as okato_name 
 , count(tovar_p.id_process) as tovar_p_name
 ,if(tdp.date_plan <'1900:00:00' ,null,tdp.date_plan) as dt1
 ,if(tdp1.date_plan <'1900:00:00' ,null,tdp1.date_plan) as dt2
 ,pr.file1m
 ,count(tovar.id_process) as tovar
 ,co.name_company as coname
FROM class_union cu
CROSS JOIN projects pj
CROSS JOIN process pr
JOIN class_union_task cut on cu.id_class_union = cut.id_class_union
JOIN task_process tp ON pr.id_process = tp.id_process 
JOIN task t ON tp.id_task = t.id_task 
 and cut.id_task = t.id_task
 and pr.id_project = t.id_project
join process as tovar on pr.id_process = tovar.parent_process
left join task_date_plan tdp on tdp.id_task_date_plan = pr.date_begin_process
left join task_date_plan as tdp1 on tdp1.id_task_date_plan = pr.date_end_process
left join process as tovar_p on  pr.id_process = tovar_p.parent_process
left join class_unit on number_code = pr.code_unit
left join company as co on co.id_company = tovar.id_company and   
WHERE pr.parent_process = 0
  and tovar.id_project_product > 0
  and pr.type_process = 0 
  AND cu.id_company = @c and cu.id_user = @u 
GROUP BY pr.id_process,t.id_task

Поля в селект-части не под агрегатными функциями - это раз. Вы на 146% уверены, что в части логики там всё в порядке?
Эксплейн моего варианта - это два.
Ну и три - из стартпоста не совсем понятно, запрос иногда стал тормозить или стабильно выдаёт три минуты?
...
Рейтинг: 0 / 0
Жутко замедлилось выполнение запроса
    #38881646
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bekass,

Когда внезапно запрос стал тормозить без видимых на то причин, иногда помогает сделать ANALYZE TABLE (или даже OPTIMIZE TABLE) для всех таблиц, участвующих в запросе.
...
Рейтинг: 0 / 0
Жутко замедлилось выполнение запроса
    #38881650
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir
Код: sql
1.
2.
and   
WHERE

тут какая-то ошибка...
...
Рейтинг: 0 / 0
Жутко замедлилось выполнение запроса
    #38881666
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

этот and убрать надо, недоглядел.
...
Рейтинг: 0 / 0
Жутко замедлилось выполнение запроса
    #38882029
Bekass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да постоянно тормозит, конечно добавилось пару тысяч записей в таблицу process. На счет логики все в порядке, агрегатная функция по вложенным в запись записям. Пример запроса от tanglir к сожалению логически не верен.
...
Рейтинг: 0 / 0
Жутко замедлилось выполнение запроса
    #38882390
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BekassПример запроса от tanglir к сожалению логически не верен.Поцчему это? Я просто честно раскрыл все ваши скобочки в зависимости от того, где они стояли - после обычных или после левых джойнов. И разобрался с условиями - соединения в джойны, фильтры в вере.
Запрос в том виде, как вы его привели, нечитаем чуть более чем совсем.
BekassНа счет логики все в порядке, агрегатная функция по вложенным в запись записям.Вообще-то я говорил о том, что группируете вы по двум полям, а в селакт-части у вас дохрена неагрегированных полей, да ещё и из других таблиц. Ну, если вы уверены в том, что их агрегировать не надо, то так тому и быть...
...
Рейтинг: 0 / 0
Жутко замедлилось выполнение запроса
    #38882401
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bekass,

Как уже написали: сделайте оптимизацию таблиц, это первое, и второе проверьте винт на "целостность" ... в прошлый раз у меня было такое когда винт ещё работал, но уже начал сыпаться. Вариант вируса в самом винте - не рассматриваю (последние достижения Касперыча)...
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Жутко замедлилось выполнение запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]