我有一个包含100行的表,其中double为数据
a1 a2 a3...
---------
1 2 3
23 55 4
2 3 7
我计划使用UNION ALL
使该表更大
a1 a2 a3...
---------
1 2 3
23 55 4
2 3 7
1 2 3
23 55 4
2 3 7
1 2 3
23 55 4
2 3 7
这是出于测试目的,所以您推荐什么,最有效的方法是什么?
答案 0 :(得分:3)
这将以指数方式增加表的大小...首先它插入x记录,然后是2x,然后是4x,然后是8x ......您可以添加distinct
或top n
等等如果你只是想每次添加相同数量的记录,那就选择。
DECLARE @count int
DECLARE @max int
SET @count int = 1
SET @max = 10
WHILE @count < @max
BEGIN
INSERT INTO myTable (a1, a2, a3)
SELECT a1, a2, a3 FROM myTable
SET @count = @count + 1
END
BTW - 不确定你要测试的是什么,但你可能会在数据集中添加除了整数之外的东西 - 例如,1.01,.99,55.7,60等。
修改强>
根据您的评论 - 如果您真的希望使用union all
,那么......
INSERT INTO myTABLE (a1, a2, a3)
SELECT a1, a2, a3 FROM
(
SELECT a1, a2, a3 FROM myTable
UNION ALL
SELECT a1, a2, a3 FROM myTable
UNION ALL
SELECT a1, a2, a3 FROM myTable
...
) a
答案 1 :(得分:2)
INSERT dbo.Table
SELECT /* TOP (n) */ t1.a1, t1.a2, t1.a3
FROM dbo.Table AS t1
CROSS JOIN dbo.Table AS t2
-- repeat CROSS JOINs as necessary
第一个交叉连接将是方形,第二个交叉连接将是立方体等.Luke @ kuru的答案你可以限制使用TOP添加的行数,以防你不想做数学。