timediff()的性能问题

时间:2016-01-04 10:22:21

标签: mysql

所以我在涉及timediff函数的查询时遇到了性能问题。

对于会话表(PK)中的每个id寄存器,study_behavi表中有几个寄存器(idsession是study_behaviour表中会话表的FK)。

您能找到一种方法来改善此查询的时间性能吗?

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

1 个答案:

答案 0 :(得分:0)

你可以尝试两件事:

  1. 如果sb.dataInit列不存在,请添加索引,并将WHERE语句更改为sb.dateInit BETWEEN '2015-01-01 00:00:00' AND '2015-12-31 23:59:59',以便可以使用该索引。
  2. 不要使用子查询,但要将exp表加入study_behaviour