如何使SQL表更大

时间:2011-09-02 19:04:18

标签: sql-server-2008

我有一个包含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

这是出于测试目的,所以您推荐什么,最有效的方法是什么?

2 个答案:

答案 0 :(得分:3)

这将以指数方式增加表的大小...首先它插入x记录,然后是2x,然后是4x,然后是8x ......您可以添加distincttop 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添加的行数,以防你不想做数学。