私はかなりうまく機能するクレイジーなステートメントを書きましたが、 2回INSERT/SELECT
の使用を避けることができれば、もう少し調整できると思います。LEN([stats].[dbo].[Domain].[DomainName])
現在、実行には 20 秒かかります。これらのLEN
セクションをテスト用の実際の数値に置き換えると、文字通り 1 秒かかります。したがって、私の希望です!
それを変数に入れる方法について頭を悩ませてきたので、それを2回使用できますが、パフォーマンスは1回しかヒットしません。私はその価値のために SQL Server 2008 R2 を使用しています。
どうもありがとう!
INSERT INTO [stats].[dbo].[5MinStats] (Qty, MsgRequest, MsgRecType, MsgDateTime, DomainID)
SELECT
COUNT([stats].[dbo].[RawMsgLog].[MsgRequest]) AS Qty,
[stats].[dbo].[RawMsgLog].[MsgRequest],
[stats].[dbo].[RawMsgLog].[MsgRecType],
DATEADD(minute, DATEDIFF(minute, 0, [stats].[dbo].[RawMsgLog].[MsgDateTime])/ 5 * 5, 0) AS MsgDateTime,
[stats].[dbo].[Domain].[DomainID]
FROM
[stats].[dbo].[RawMsgLog], [stats].[dbo].[Domain]
WHERE
RIGHT([stats].[dbo].[Domain].[DomainName], LEN([stats].[dbo].[Domain].[DomainName])) = RIGHT([stats].[dbo].[RawMsgLog].[MsgRequest], LEN([stats].[dbo].[Domain].[DomainName]))
AND [stats].[dbo].[RawMsgLog].[switch] = 1
GROUP BY
[stats].[dbo].[RawMsgLog].[MsgRequest],
[stats].[dbo].[RawMsgLog].[MsgRecType],
DATEADD(minute, DATEDIFF(minute, 0, [stats].[dbo].[RawMsgLog].[MsgDateTime]) / 5 * 5, 0),
[stats].[dbo].[Domain].[DomainID]
ORDER BY
MsgDateTime ASC