Я пытаюсь ускорить свою хранимую процедуру, поэтому я проверить свою хранимую процедуру в двух форматах с использованием статистики Ио, как показано нижевнутреннее соединение против, где положение подзапрос SQL Server
Метод 1: с помощью присоединиться
set statistics io on
select top 2000
p.Vehicleno,
dbo.GetVehicleStatusIcon1(p.Direction, StatusCode, 0) as 'Status',
location,
Convert(varchar(13), p.TrackTime, 102) + ' ' + Convert(varchar(13), p.TrackTime, 108) AS 'TrackTime',
p.Speed, p.Ignition
from
pollingdata p
inner join
assignvehicletouser asn on asn.vehicleno = p.vehicleno
where
asn.empid = 1
я получаю результат как статистика
Table 'Worktable'. Scan count 943, logical reads 7671, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'AssignVehicleToUser'. Scan count 1, logical reads 41, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'PollingData'. Scan count 1, logical reads 50, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Способ 2: с помощью ИНЕКЕ суб-запроса
set statistics io on
select top 2000
Vehicleno,
dbo.GetVehicleStatusIcon1(Direction,StatusCode, 0) as 'Status',
location,
Convert(varchar(13), TrackTime, 102) + ' ' + Convert(varchar(13), TrackTime, 108) AS 'TrackTime',
Speed, Ignition
from
pollingdata
where
vehicleno in (select vehicleno
from assignvehicletouser
where empid = 1)
я получаю результат как статистика
Table 'PollingData'. Scan count 1, logical reads 50, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'AssignVehicleToUser'. Scan count 1, logical reads 41, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Необходимо знать, какой из них лучше использовать?
Нужно объяснять, как работает логическое чтение?
Всегда рекомендуется использовать Joins вместо IN. SO первым методом будет лучше. –
не могли бы вы объяснить мне логические чтения –
@SridharDD Это было «всегда рекомендуется» десять лет назад. Просто придерживайтесь значения операции - это логическое соединение или нет? – Luaan