Это, вероятно, блокировка. Как написано, этот запрос всегда требует полного сканирования. Тот факт, что он выполняется в SSMS в 2 се c, указывает на то, что это не очень дорогой запрос. Возможно, у вас есть незафиксированное обновление этой таблицы в другом сеансе?
Вы можете попробовать реорганизовать его для возможного использования индексов или исследовать блокировку на SQL сервере.
EG
USE TEMPDB
GO
drop table if exists [TABLE]
go
create table [TABLE]
(
id int primary key,
data char(200) not null default replicate('z',200),
INSERT_DATE datetime,
LAST_MODIFIED_DATE datetime
)
create index ix_T_id on [TABLE](INSERT_DATE)
create index ix_T_lm on [TABLE](LAST_MODIFIED_DATE)
go
with q as
(
select top 1000000 row_number() over (order by (select null)) i
from sys.messages m, sys.messages m2
)
insert into [TABLE] (id,insert_date,LAST_MODIFIED_DATE)
select i, dateadd(minute,-1*i,getdate()),dateadd(minute,-1*i,getdate())
from q
go
set statistics time on
go
SELECT *
FROM [TABLE]
WHERE [INSERT_DATE] >= CONVERT(DATE, GETDATE() - 1) AND [INSERT_DATE] < CONVERT(DATE, GETDATE())
OR [LAST_MODIFIED_DATE] >= CONVERT(DATE, GETDATE() - 1) AND [LAST_MODIFIED_DATE] < CONVERT(DATE, GETDATE())
/*
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
SQL Server parse and compile time:
CPU time = 233 ms, elapsed time = 233 ms.
*/
SELECT *
FROM [TABLE]
WHERE (SELECT CONVERT(DATE, MAX(v))
FROM (VALUES ([INSERT_DATE]), ([LAST_MODIFIED_DATE])) AS value(v)) = CONVERT(DATE, GETDATE() - 1);
/*
SQL Server Execution Times:
CPU time = 1360 ms, elapsed time = 328 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
*/
go
set statistics time off
go