我有兩個表Channel和ChannelData。頻道表有40條記錄,每分鐘一條記錄將被插入頻道表的每個頻道的ChannelData表中。現在ChannelData表格中有超過1500萬條記錄。我按照以下方式編寫了一個查詢,以獲取ChannelData表中40個通道的最新記錄值。SQL Server Express上的查詢執行時間太長
select
max(chnldata.Id) as ChannelDataId,
chnl.id as ChannelId,
chnl.ChannelName as ChannelName,
chnldata.ChannelValue as channelValue,
chnl.ChannelMonitoringUnits as ChannelUnits,
chnldata.ChannelDataLogTime as channelDataLogTime,
chnl.StationId,
chnldata.Active
from
ChannelData as chnldata
inner join Channel as chnl on chnl.Id = chnldata.ChannelId
where
chnl.Active = 1
and
chnldata.ChannelDataLogTime in
(SELECT
MAX(chnldata1.ChannelDataLogTime)
FROM
ChannelData as chnldata1
where
chnldata1.ChannelId = chnl.Id)
group by
chnldata.Id,
chnl.id,
ChannelName,
ChannelValue,
chnl.ChannelMonitoringUnits,
ChannelDataLogTime,
chnl.StationId,
chnldata.Active
當我執行這個查詢上的SQLServer 2008 Express版本正在採取29分鐘得到的結果,但是當我試圖運行SQLServer的2008標準版相同的查詢用了不到1分鐘上具有1500萬條記錄的ChannelData表的數據庫。是否有任何其他方式來編寫此查詢,以便在SQL Server 2008 Express中不到一分鐘就可以得到結果。