У моего клиента очень большая база данных. Две таблицы, содержащие записи пациентов, имеют более 10 million rows
. Когда я выбираю запись пациента для конкретного пациента, я получаю запись через 2-3 секунды. Но если я передаю условие between date
в состоянии where
, я не получаю записи раньше, чем через 25-30 минут. Мой запрос-
select convert(varchar(12),[DateTime],101) as [DateTime] , min(cast(Response as int)) as [MinFallTotal], max(cast(Response as int)) as [MaxFallTotal]
from NurQueryResults
where VisitID = 'W3074332666' and QueryID = 'NURFALLZ'
Group by convert(varchar(12),[DateTime],101)
Я получаю результат верхнего запроса через 2-3 секунды, НО не для этого -
select VisitID, min(cast(Response as int)) as [MinFallTotal], max(cast(Response as int)) as [MaxFallTotal]
from NurQueryResults
where QueryID = 'NURFALLZ' and convert(varchar(12),[DateTime],101)='12/23/2010'
Group by convert(varchar(12),[DateTime],101), VisitID
Фактическое требование -
select TOP 10 AV.VisitID as [UNIT], AV.AccountNumber as [ACCOUNT], AV.Name as [PATIENT NAME], convert(varchar(11),AV.BirthDateTime,101) as [DoB]
, convert(varchar(12),NQ.[DateTime],101) as [DateTime],
(cast(min(cast(NQ.Response as int)) as varchar(5))+ ' - ' + cast(max(cast(NQ.Response as int)) as varchar(5)) ) as [FALL]
from AdmVisits AV join NurQueryResults NQ ON
AV.VisitID = NQ.VisitID
where NQ.QueryID = 'NURFALLZ' AND convert(varchar(12),NQ.[DateTime],101) = '12/24/2010'
Group by convert(varchar(12),NQ.[DateTime],101), AV.VisitID, AV.AccountNumber, AV.Name, convert(varchar(11),AV.BirthDateTime,101)
Может кто-нибудь сказать мне, почему это занимает так много времени, чтобы выполнить и каково решение ??