Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Жутко замедлилось выполнение запроса / 9 сообщений из 9, страница 1 из 1
17.02.2015, 12:18:39
    #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
17.02.2015, 12:22:39
    #38881582
Bekass
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жутко замедлилось выполнение запроса
Во вложении скрин explain. таблицы все innoDB

Спасибо за помощь!
...
Рейтинг: 0 / 0
17.02.2015, 12:43:51
    #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
17.02.2015, 13:04:30
    #38881646
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жутко замедлилось выполнение запроса
Bekass,

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

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

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

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


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