T1的逻辑读数约为130,000,而T2的逻辑读数为140万。 T2拥有约280万行。从性能的角度来看,有什么方法可以减少这些读取?下面的查询示例:
SELECT T1.[ID],T1.[Name],T1.[City],T2.[Number]
FROM T1
LEFT JOIN T2 ON T2.[ID] = T1.[ID]
答案 0 :(得分:2)
创建两个非聚集索引:
这样,查询被索引覆盖(SQL Server将仅访问索引页)。
如果这不能显着提高查询性能,请尝试对联接使用“提示”:
SELECT T1.[ID], T1.[Name], T1.[City], T2.[Number]
FROM T1
LEFT HASH JOIN T2 ON T2.[ID] = T1.[ID]
请分享结果(访问的页面数)。
答案 1 :(得分:1)
您可以优化此查询:
SELECT T1.[ID], T1.[Name], T1.[City], T2.[Number]
FROM T1 LEFT JOIN
T2
ON T2.[ID] = T1.[ID];
通过创建索引。适当的索引位于T2(ID, Number)
上。您可以在索引中include
而不是将其用作键,但是我猜想它可能对其他查询中的索引很有用。