以下は、91000を超えるレコードを含むテーブルに対してnavicat my sqlで実行している私のクエリです。
select l.*
from localcdrsmem l
LEFT JOIN (
SELECT LocalCDRID, ForeignCDRsID
from localcdrsmem l
INNER JOIN foreigncdrsmem f
ON l.CalledNumber=f.CalledNumber and
ABS(l.Duration-f.Duration)<= 2 and
ABS(TIMESTAMPDIFF(SECOND,f.StartTime,l.StartTime))<=100
group by l.CalledNumber)
as temp ON l.LocalCDRID = temp.LocalCDRID
where temp.LocalCDRID IS NULL;
テーブルは次のとおりです。
localcdrsmem - >
+---------+------------+--------+----------
localcdrid | callednumber | duration | starttime
+---------+------------+--------+----------+
foreigncdrsmem- >
+------------+------------+--------+----------
foreigncdrid | callednumber | duration | starttime
+---------+------------+--------+----------+
このクエリを最適化するためのアイデアはありますか??