MySQL冗长的查询时间

时间:2017-12-27 00:09:49

标签: mysql sql

我有一个带有4个表的mysql数据库,可以独立更新。在任何给定时间(bhMacAcct和sv),其中2个表将具有大约25k到35k的行。我必须加入每个表中的各个位。

这是我最终登陆的查询:

SELECT bhMacAcct.acct,pkg,sv.mac,sv.recData
FROM bhMacAcct,bhPkgAcct,sv
WHERE (bhMacAcct.acct = bhPkgAcct.acct) AND (bhMacAcct.mac = sv.mac);

使用此查询需要3-5分钟。可能有更简单的方法吗?这可以进一步优化速度吗?

1 个答案:

答案 0 :(得分:2)

首先,始终使用正确的,明确的JOIN语法并限定所有列名称:

SELECT ma.acct, pkg, sv.mac, sv.recData
FROM bhMacAcct ma JOIN
     bhPkgAcct pa
     ON ma.acct = pa.acct JOIN
     sv
     ON ma.mac = sv.mac;

对于此查询,请从用于连接的所有列开始索引。我建议:bhMacAcct(acct, mac)bhPkgAcct(acct)sv(mac, recData)。我还会将pkg放在适当的索引中,因此索引会覆盖查询。