Mysql 优化查询获取每个用户每天的总通话持续时间
我从具有以下结构的表Mysql 优化查询获取每个用户每天的总通话持续时间,mysql,query-optimization,Mysql,Query Optimization,我从具有以下结构的表call\u details创建了视图HW02 pri|u key |呼叫|呼叫|否|应答|日期|时间|持续时间 我必须找到每个用户每天呼叫的总持续时间。 并将视图创建为 create view hw02 as select calling_no, day(answer_date_time) as days,duration from call_details; 我计算每个订户每天的总持续时间为 select a.calling_no,a.days,sum(b.durat
call\u details
创建了视图HW02
pri|u key |呼叫|呼叫|否|应答|日期|时间|持续时间
我必须找到每个用户每天呼叫的总持续时间。
并将视图创建为
create view hw02 as
select calling_no, day(answer_date_time) as days,duration from call_details;
我计算每个订户每天的总持续时间为
select a.calling_no,a.days,sum(b.duration)
from hw02 as a, hw02 as b
where a.calling_no=b.calling_no and a.days=b.days;
执行此查询需要很多时间。所以我的问题是如何优化这个查询。(数据:-大约150000行)试试这个,速度会更快,符合您的目的
SELECT
calling_no,
DATE(answer_date_time) as day,
SUM( duration )
FROM
call_details
GROUP BY
calling_no,
DATE(answer_date_time)
在您的情况下,视图上的自连接
本身不需要,我们只需要用户
调用其他用户
的总持续时间,按日期
分组
调用
的持续时间,我想对于一个特定的调用
来说,被调用的和调用的用户
(记录)是相同的。如果您有多个月的数据,您使用的day()
函数将不会返回正确的结果
,因此我使用了date
函数
更多关于mysql中的datetime函数的信息,请尝试此功能,它应该会更快,并满足您的需要
SELECT
calling_no,
DATE(answer_date_time) as day,
SUM( duration )
FROM
call_details
GROUP BY
calling_no,
DATE(answer_date_time)
在您的情况下,视图上的自连接
本身不需要,我们只需要用户
调用其他用户
的总持续时间,按日期
分组
调用
的持续时间,我想对于一个特定的调用
来说,被调用的和调用的用户
(记录)是相同的。如果您有多个月的数据,您使用的day()
函数将不会返回正确的结果
,因此我使用了date
函数
有关mysql中datetime函数的更多信息,您可以按日期应用分区,然后在调用\u no时聚合持续时间。。。我认为这比比较2个alices的值要好。您可以按日期应用分区,然后在调用\u no时聚合持续时间。。。我认为这比比较两个爱丽丝的价值要好。。