我使用以下查询
SELECT a.job_number as f31jn, b.job_number as f32jn
FROM
f31 a LEFT JOIN f32 b
ON (a.job_number = b.job_number AND a.date_audit = b.date_audit)
WHERE date_format(a.date_audit, '%b %Y') = 'Dec 2012'
GROUP BY a.job_number, a.ref_id, b.job_number, b.ref_id
上述查询大约需要160秒才能完成。
我已向以下列添加索引:
f31 - job_number, date_audit (separate indexes)
f32 - job_number, date_audit (separate indexes)
EXPLAIN
上述查询的结果
编辑
将查询更改为
SELECT a.job_number as f31jn, b.job_number as f32jn
FROM
f31 a LEFT JOIN f32 b
ON (a.job_number = b.job_number AND a.date_audit = b.date_audit)
WHERE a.date_audit >= '2012-12-01' AND a.date_audit < '2013-01-01'
GROUP BY a.job_number, a.ref_id, b.job_number, b.ref_id
并且执行时间仍然没有下降。它保持在 150 到 160 秒的相同近似范围内。
现在EXPLAIN
出现为
对于 table a
,它仍在搜索 90% 的记录(总记录在 68k 左右)。