我有这两个具有成千上万个数据的表,我将在两个表上查找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;

最佳答案

显而易见的问题是:您是否有索引?

如所写,尝试使用tableOne(aNumber1, aNumber2)tableTwo(bNumber1, bNumber2)的最佳索引。

如果您提供样本数据,所需结果以及您要执行的操作的说明,则可能会有更多建议。

关于php - 为什么mysql查询需要很长时间才能收到结果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44915487/

10-13 22:24