我有这两个包含数千个数据的表,我将在这两个表上查找1:1的匹配项。我有下面的查询,但是当限制已经超过1000时,返回开始变慢,几乎花了一个小时我才收到结果,我使用我本地的xampp作为数据库,并有一台4G(3.4G可用) RAM PC。
有没有其他方法可以增强和提高查询速度?
对于那些将提供帮助的人,请提前向您表示感谢。
SELECT a.rNum,
a.cDate,
a.cTime,
a.aNumber,
a.bNumber,
a.duration,
a.tag,
a.aNumber2,
a.bNumber2,
'hasMatch',
a.concatDate,
a.timeMinutes
FROM tableOne a
INNER JOIN
tableTwo b ON a.aNumber2 = b.aNumber2
AND a.bNumber2 = b.bNumber2
WHERE a.hasMatch = 'valid'
AND (a.duration - b.duration) <= 3
AND (a.duration - b.duration) >= -3
AND TIMEDIFF(a.concatDate,b.concatDate) <= 3
AND TIMEDIFF(a.concatDate,b.concatDate) >= -3
LIMIT 0,100;
发布于 2017-07-05 00:28:13
一个显而易见的问题是:你有索引吗?
如前所述,在tableOne(aNumber1, aNumber2)
和tableTwo(bNumber1, bNumber2)
上尝试的最佳索引。
如果您提供了示例数据、所需的结果以及您正在尝试执行的操作的解释,则可能会有进一步的建议。
发布于 2017-07-05 00:31:26
简而言之,你可以尝试许多步骤。
分析表首先执行一条分析语句,并确保比较的属性具有相同的长度< accordingly
>F214>使分析表尽可能避免任何冗余数据或空值<>H213>
https://stackoverflow.com/questions/44915487
复制相似问题