MYSQL基于时间的优化|在电话号码和最近通话的表格之间加入通话日期

时间:2018-10-11 00:19:14

标签: mysql sql

这项工作是将以下查询的功能转换为可以快速执行的功能,因为我们当前的逻辑远远不够慢(总运行时间超过24小时)。请注意,相应的列已被索引。

我们的表的大小如下; 表1-300,000行 表2-15,000行

此查询根据电话号码uid以及最接近的进行日期来匹配两个表之间的电话呼叫日期。第一个表(电话表1)是对外营销电话,而第二个表(电话表2)中的电话包含相同的电话号码,但在入站电话的范围内营销活动。该逻辑根据相应的时间和UID将最近的出站电话与入站电话表进行匹配

查询如下;

SELECT `Phone Number 2`, `Time of Call` FROM `Phone Call Table 2`
       JOIN 
       `Phone Call Table 1` 
    ON `Phone Call Table 1`.`Phone_Call_Start_1` = 
       (SELECT MAX(`Phone_Call_Start_1`)
              FROM `Phone Call Table 1`
              WHERE `Phone_Call_Start_1` < `Phone Call Table 
2`.`Phone_Call_Start_2`
              AND `Phone Number 1` = `Phone Number 2`
                     ) ;  

1 个答案:

答案 0 :(得分:0)

请尝试以下SQL:

select aa.`Phone Number 2`, aa.`Time of Call`, max(bb.`Phone_Call_Start_1`) as lateststart
from `Phone Call Table 2` aa
inner join `Phone Call Table 1` bb on aa.`Phone Number 2` = bb.`Phone Number 1`
and bb.`Phone_Call_Start_1` < aa.`Phone_Call_Start_2`
group by aa.`Phone Number 2`, aa.`Time of Call`