次の定義のaVIEW
はあなたにとって良くないでしょうか?私が信じているようにISNULL()
代わりに使用すると、非常にわずかに速くなります。COALESCE()
ただし、JOIN基準が正しいかどうかはわかりません。
CREATE VIEW [dbo].[Answer]
WITH SCHEMABINDING -- !Please read up about SCHEMABINDING!
AS
SELECT T1.rowid
,Result = ISNULL(T1.samplevalue - T2.samplevalue, T1.samplevalue)
FROM dbo.NumericSamples T1
JOIN dbo.NumericSamples T2 ON T1.rowid - 1 = T2.rowid
-- OR
-- JOIN dbo.NumericSamples T2 ON T1.rowid = T2.rowid -1
ISNULL()
vsについてCOALESCE()
-ISNULL()
この場合は速いようです
IF OBJECT_ID('tempdb.dbo.#ISNULL') IS NOT NULL DROP TABLE #ISNULL
IF OBJECT_ID('tempdb.dbo.#COALESCE') IS NOT NULL DROP TABLE #COALESCE
DECLARE @StopW DATETIME = GETDATE()
SELECT T1.rowid
,Result = ISNULL(T1.samplevalue - T2.samplevalue, T1.samplevalue)
INTO #ISNULL
FROM dbo.NumericSamples T1
JOIN dbo.NumericSamples T2 ON T1.rowid - 1 = T2.rowid
PRINT DATEDIFF(MS, @StopW, GETDATE())
SET @StopW = GETDATE()
SELECT T1.rowid
,Result = COALESCE(T1.samplevalue - T2.samplevalue, T1.samplevalue)
INTO #COALESCE
FROM dbo.NumericSamples T1
JOIN dbo.NumericSamples T2 ON T1.rowid - 1 = T2.rowid
PRINT DATEDIFF(MS, @StopW, GETDATE())