2016-01-04 5 views
0

Так что у меня проблема с производительностью с запросом, включающим функцию timediff.Ошибка производительности с timediff()

Для каждого регистра идентификатора в таблице сеанса (PK) в таблице study_behaviour имеется несколько регистров (идентификатор - это FK из таблицы сеанса в таблице study_behaviour).

Можете ли вы найти способ улучшить производительность с точки зрения времени этого запроса?

create table eficacia_time as 
    select s.id,s.iduser,sum(hour(timediff(sb.dateend,sb.dateinit))+minute(timediff(sb.dateend,sb.dateinit))/60) as SesTime 
    from study_behaviour sb 
    left join session s on s.id=sb.idsession 
    where year(sb.dateInit)=2015 and s.iduser in (select userid as iduser from exp) 
    group by s.id 

ответ

0

Вы могли бы попробовать 2 вещи:

  1. Добавить индекс в sb.dataInit столбца, если он не существует, и изменить WHERE заявление sb.dateInit BETWEEN '2015-01-01 00:00:00' AND '2015-12-31 23:59:59' так, что индекс может быть использован.
  2. Не использовать подзапрос, но присоединиться к exp стол с study_behaviour столом
Смежные вопросы