У меня есть фрагмент кода SQL, который сравнивает последние две записи и дает datediff
в считанные секунды, однако способ, которым я занимаюсь, довольно медленный, занимая до 20 секунд, чтобы выполнить в зависимости от того, сколько мне требуется идентификаторов контроллера проверить.Плохая производительность с sql-запросом
Что было бы более эффективным способом сделать это?
select
T.controllerID,
datediff(ss, T.Max_dtReading, T1.Max_dtReading) As ElaspedTime
from
(select
controllerID,
max(dtReading) as Max_dtReading
from
ReaderData
where
CardID = 'FFFFFFF0' AND (controllerID in(2,13,28,30,37,40))
group by
controllerID) as T
outer apply
(select
max(T1.dtReading) as Max_dtReading
from
ReaderData as T1
where
T1.CardID = 'FFFFFFF0' AND (controllerID in(2,13,28,30,37,40))
and T1.controllerID = T.controllerID
and T1.dtReading < T.Max_dtReading) as T1
Какую версию SQL Server вы используете? –
Sql server 2008 –