SQL服务器 2008 在 Windows 2008 上
请比较以下 SQL:
1.
select count(*)
from Trades t
inner join UserAccount ua on ua.AccID = t.AccID
2.
select count(*)
from Trades t
inner join (
select *
from UserAccount ua
where ua.UserID = 1126
) as theua on theua.AccID = t.AccID
3.
select count(*)
from Trades t
inner join UserAccount ua on ua.AccID = t.AccID
where ua.UserID=1126
给定的Trades表有数百万行,而UserAccount表非常小。AccID可能会重复。
执行结果:
1. 234734792 2. 8806144 3. 8806144
我希望第二个查询至少和第一个一样快,但实际上它比第三个查询慢得多。 时间消耗:
1. 2秒 2. 10秒 3. 8秒
有人能解释原因吗?当我需要像UserID = 1126这样的过滤器时,是否可能使其更快?