1
我的客戶有一個非常大的數據庫。兩張包含患者記錄的表格有超過10 million rows
。當我爲特定患者選擇患者記錄時,我會在2-3秒內獲得記錄。但是如果我在where
條件下通過between date
條款,我不會在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)
任何人都可以告訴我爲什麼要花這麼多時間來執行,解決方案是什麼?
最重要的是什麼指標都在這張桌子?這聽起來像你需要一個列上持有日期,你試圖使用BETWEEN。 – 2011-03-07 05:43:53