というテーブルと'@DeviceSample'
、という別のテーブルがあるとします。'@DevicesActivityDataSample'.
'MAX(DATETIME)'
各デバイスの上位 1 つのFROMを選択したいのです'@DevicesActivityDataSample'
が、「DevicesActivityDataSample」で重複した行があった場合、結果ではすべての重複した行を取得しますが、上位の行を探しています。もう1つの問題は、100000行から選択したい場合、MAXを計算するため、結果を得るのに長い時間がかかることです。これは私のサンプルコードです
DECLARE @DeviceSample TABLE
(
RowID INT IDENTITY(1, 1) PRIMARY KEY CLUSTERED,
ADeviceID INT ,
DeviceName VARCHAR(50) NOT NULL
)
INSERT @DeviceSample
SELECT 1,'DEVICE 1' UNION ALL
SELECT 2,'DEVICE 2' UNION ALL
SELECT 3,'DEVICE 3'
DECLARE @DevicesActivityDataSample TABLE
(
RowID INT IDENTITY(1, 1) PRIMARY KEY CLUSTERED,
BDeviceID INT,
DeviceDateTime DATETIME,
CMD NVARCHAR(50)
)
INSERT @DevicesActivityDataSample
SELECT 1, '2013-02-14 19:08:46.000','HHJJ' UNION ALL
SELECT 2, '2013-02-15 03:30:24.000','HHJJ' UNION ALL
SELECT 2, '2013-02-15 03:30:24.000','HHJJ' UNION ALL
SELECT 2, '2013-02-15 03:30:24.000','HHJJ' UNION ALL
SELECT 1, '2013-02-16 03:30:24.000','HHJJ' UNION ALL
SELECT 1, '2013-02-11 03:30:24.000','HHJJ' UNION ALL
SELECT 2, '2013-02-10 03:30:24.000','HHJJ' UNION ALL
SELECT 3, '2013-02-07 04:25:24.000','HHJJ' UNION ALL
SELECT 3, '2013-02-12 23:02:02.000','HHJJ'
SELECT *
FROM @DeviceSample
INNER JOIN
@DevicesActivityDataSample
ON ADeviceID = BDeviceID
WHERE DeviceDateTime IN (
SELECT MAX(DeviceDateTime) AS MaxDate
FROM @DevicesActivityDataSample
GROUP BY BDeviceID
)
GO
および1000000行以上の高速高速結果を取得するにはどうすればよいですか