我有3个表:有没有一种方法来优化这个SQL Server查询?
表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
我得到我所需要的数据,但此查询时间太长,反正是有优化它,而无需修改表指数?
事情指出:
表2和表3是不一样的表。
我需要从table2和table3中获取“last_updated”的整行,而不仅仅是日期。
编辑**
查询使用WHERE table1.id = id
时,返回一个记录服用约3-4秒。
表1有〜84000区域经济共同体
表2有〜96000区域经济共同体
表3有〜81000区域经济共同体
table2.date_updated和table3.date_updated *上的索引*可能*有帮助。但你最好的选择是总是看执行计划。 –
但是,如果没有列出索引的内容,您提到的是不修改索引,我们不一定建议更多。我会通过(id,date_updated) – DRapp
@DRapp在这两个表上有一个索引。'id'不是'date_updated'列只有索引 – SOfanatic