0
我需要使用基於ID
& DATE
列的最後一個已知值中的新值更新NULL
值。請注意,只要ID
列正在更改,非空值更新應該會更改。與SQL Server中其他表中的屬性相關的屬性
下面的例子查詢,Null
由5 L2取代& 2016年1月12日行,但作爲ID
被改變爲L2和5從L1行把它應爲空。但每當ID
正在改變時,我需要獲得R_ID
。
我的表有9000萬行,更新過程應儘可能快。
CREATE TABLE #temp
(
ID nvarchar(10),
DATE date,
R_ID INT
);
INSERT INTO #temp
SELECT 'L1', '2016-12-01', NULL
UNION ALL
SELECT 'L1', '2016-12-02', 5
UNION ALL
SELECT 'L1', '2016-12-03', NULL
UNION ALL
SELECT 'L2', '2016-12-01', NULL
UNION ALL
SELECT 'L2', '2016-12-02', 8
UNION ALL
SELECT 'L2', '2016-12-03', NULL
UNION ALL
SELECT 'L3', '2016-12-03', 3
UNION ALL
SELECT 'L3', '2016-12-04', NULL
UNION ALL
SELECT 'L3', '2016-12-04', NULL ;
DECLARE @R_ID INT;
UPDATE #temp WITH(TABLOCKX)
SET @R_ID = R_ID = CASE WHEN R_ID IS NULL THEN @R_ID ELSE R_ID END
OPTION(MAXDOP 1);
做
邏輯正在工作,但查詢需要一個多小時才能更新90 m記錄。 – Rajini
那麼,如果90米涉及90,000,000條記錄,那麼對於使用子查詢進行更新的時間並不長...... –