你知道用大量空行填充表格的任何有效方法吗?使用WHILE
子句插入它们并不是很有效。绝对有更好的方法用空行填充表格:
DECLARE @CNT int
SET @CNT = 1
WHILE @CNT < 3
BEGIN
INSERT INTO TAB VALUES( '1' )
SET @CNT = @CNT + 1
END
我还想知道,如果可以使用SELECT
子句和CTE(公用表表达式)显示1 mil行(编号从1到1000000)而不使用任何现有表。
我将不胜感激。
答案 0 :(得分: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)
;
查看正在创建的100个号码的SQL Fiddle with Demo。
此代码来自@Aaron Bertrand's文章Generate a set or sequence without loops – part 1。本文还包括生成数字序列的其他方法。
答案 1 :(得分:1)
CREATE PROCEDURE dorepeat()
BEGIN
SET @x = 0;
REPEAT
INSERT INTO your_table (value) VALUES ("");
SET @x = @x + 1;
UNTIL @x > 999999 END REPEAT;
END
我认为这样的事情非常快。