这是速度和报表范围还有一个问题...
试试这个:
- 这将创建一个@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