为什么mysql查询需要很长时间才能收到结果?

时间:2017-07-05 00:25:08

标签: php mysql

我有这两个包含数千个数据的表,我会在两个表上找到匹配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;

2 个答案:

答案 0 :(得分:1)

显而易见的问题是:你有索引吗?

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

如果您提供样本数据,所需结果以及您尝试执行的操作的说明,可能会有进一步的建议。

答案 1 :(得分:0)

您可以简单地尝试许多步骤

  • 首先执行https://pastebin.com/MCNj2LLS声明并采取相应行动
  • 确保比较的属性长度相等
  • 让您的钥匙尽可能短
  • 考虑在您需要的地方添加索引,(如果值适合索引,则在WHERE子句中,并且经常执行此查询)
  • 制作分析表
  • 尽可能避免使用任何冗余数据或使用NULL值