這是速度和報表範圍還有一個問題...
試試這個:
- 這將創建一個@numbers
表,其中包含1個mio號碼:
DECLARE @numbers TABLE(Nbr BIGINT);
WITH N(N) AS
(SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1)
,MoreN(N) AS
(SELECT 1 FROM N AS N1 CROSS JOIN N AS N2 CROSS JOIN N AS N3 CROSS JOIN N AS N4 CROSS JOIN N AS N5 CROSS JOIN N AS N6)
INSERT INTO @numbers(Nbr)
SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL))
FROM MoreN;
- 這是用於插入一個虛擬表:
CREATE TABLE Dummy(ID INT IDENTITY,CreationDate DATETIME);
--Play與@Count
值周圍。您可以一次插入1 mio行。雖然這個運行了一段時間,都將具有相同的日期時間值:
--USE少數這裏及以下,還是價值的同時
--USE這裏一個很大的數量及以下小將呈現略晚值的第二個插入
DECLARE @Count INT = 1000;
INSERT INTO Dummy (CreationDate)
SELECT GETDATE()
FROM (SELECT TOP(@Count) 1 FROM @numbers) AS X(Y);
--a第二插入
SET @Count = 10;
INSERT INTO Dummy (CreationDate)
SELECT GETDATE()
FROM (SELECT TOP(@Count) 1 FROM @numbers) AS X(Y);
SELECT * FROM Dummy;
--clean達
GO
DROP TABLE Dummy;
「但事實並非如此」我沒有看到你的陳述是真實的。隨着時間的推移,這些數字正在上升。數字上升但沒有單一數字,但時間少於以前的數字。 – nvoigt
爲什麼在58002之後會插入58001? –
這是正確的,主鍵值是正確的,查看你的查詢,你按照創建日期DESCENDING命令結果,所以期望第二個循環的值會先執行,因爲它們是在第一個循環執行後插入的。 – Sherlock