从大规模表中复制行百分比的最快方法?

时间:2015-09-02 19:45:56

标签: sql performance select insert teradata

我有一个包含超过30亿行数据的大表(db2.table1)。我试图从那个非常大的表中选择一定百分比(例如50%作为例子)并将其插入另一个最初为空的表中。

我有这个查询

INSERT INTO db1.table1 (col1, col2, col3, col4)
SELECT TOP 50 PERCENT col1, col2, col3, col4 FROM db2.table1;

这样可行,但令人难以置信慢。花了近一个小时才选择了约80%的餐桌。但是,当我运行select *并插入查询复制所有数据行(如下所示)时,它会在3分钟内完成。

INSERT INTO db1.table1 (col1, col2, col3, col4)
SELECT * FROM db2.table1;

从我的研究中,我认为它与TOP有关,需要首先对数据行进行排序,这需要大量的磁盘I / O,这可能会导致相当大的减速,尤其是在像这样大的表上。

所以,我现在想知道,从一个非常大的表到另一个非常大的表中选择和复制某些指定部分数据的最快方法是什么?选择的行不一定需要是随机的或以任何方式排序。

编辑:我应该补充一点,我并不知道或关心选择哪些行,因为该表包含随机生成的字母数字字符串。我只需复制表格的x行或y%以进行测试。

1 个答案:

答案 0 :(得分:0)

将表格导出到文件,剪切所需的amout并导入文件。