我有 3 张桌子:
表 1:
id | name
1 | joe
2 | peter
3 | sandra
表2:
id | fkId | date_updated
1 | 1 | 2013-01-31
2 | 1 | 2013-04-01
3 | 2 | 2013-02-04
4 | 2 | 2013-01-02
表 3:
id | fkId | date_updated
1 | 1 | 2013-01-31
2 | 3 | 2013-04-01
3 | 3 | 2013-02-04
4 | 2 | 2013-01-02
我有以下内容:
SELECT *
FROM
table1
LEFT OUTER JOIN
table2 ON table1.id = table2.fkId
LEFT OUTER JOIN
table3 ON table1.id = table3.fkId
GROUP BY
table1.id
HAVING
table2.date_updated = max(table2.date_updated)
AND table3.date_updated = max(table3.date_updated)
我的输出如下所示:
name | table2 | table3
joe | 2013-04-01 | 2013-01-31
peter | 2013-02-04 | 2013-01-02
sandra| | 2013-04-01
我得到了我需要的数据,但是这个查询花费的时间太长,有没有在不修改表索引的情况下优化它?
需要指出的事情:
table2 和 table3 不是同一张表。
我需要从 table2 和 table3 中获取“last_updated”的整行,而不仅仅是日期。
编辑 **
WHERE table1.id = id
使用, 返回单个记录时,查询大约需要 3-4 秒。
表 1 有 ~ 84000 条记录
表 2 有 ~ 96000 条记录
Table3 有 ~ 81000 条记录