用百万空行填充表的有效方法

Kon*_* Z. 1 t-sql insert common-table-expression sql-server-2008

你知道用大量空行填充表格的任何有效方法吗?使用WHILE子句插入它们 并不是很有效.用空行填充表肯定有更好的方法:

DECLARE @CNT int
SET @CNT = 1
WHILE @CNT < 3
BEGIN
INSERT INTO TAB VALUES( '1' )
SET @CNT = @CNT + 1
END
Run Code Online (Sandbox Code Playgroud)

我还想知道,如果可以在SELECT不使用任何现有表的情况下使用子句和CTE(公用表表达式)显示1 mil行(编号从1到1000000).

我将不胜感激任何帮助.

Tar*_*ryn 8

这是一种生成数字序列的方法:

SELECT TOP (1000000) n = CONVERT(INT, ROW_NUMBER() OVER (ORDER BY s1.[object_id]))
INTO yourtable
FROM sys.all_objects AS s1 CROSS JOIN sys.all_objects AS s2
OPTION (MAXDOP 1);

CREATE UNIQUE CLUSTERED INDEX n ON yourtable(n)
-- WITH (DATA_COMPRESSION = PAGE)
;
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle with Demo,创建100个数字.

这段代码来自@Aaron Bertrand的文章Generate a set or sequence without loop - part 1.本文还包括生成数字序列的其他方法.