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