SQL Server 2008 в WINDOWS 2008
Пожалуйста, сравните следующие sqls:
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
Данные сделки содержат миллионы строк, а UserAccount - довольно маленькая таблица. И AccID может быть дублирующим.
Результат выполнения:
- 234734792
- 8806144
- 8806144
Я ожидаю, что № 2 может быть по крайней мере так же быстро, как № 1, но на самом деле это намного медленнее, даже медленнее, чем № 3
Потребление времени:
- 2 с
- 10 секунд
- 8 секунд
Может ли кто-нибудь объяснить причину? И можно ли сделать это быстрее, когда мне нужен фильтр типа UserID = 1126?