我正在尝试将SSIS包转移到Python中。包中有一个UNION ALL编辑器,由于我没有使用SSIS的经验和使用SQL的经验非常有限,我认为它等于SQL中的UNION ALL
命令。 DBMS是MS SQL Server 2008。
所以我在Python中测试以下代码:
SELECT *
INTO union_tabl
FROM
(
SELECT TOP 10
col1
, col2
, col3
, ......
FROM table1
UNION ALL
SELECT TOP 10
col1
, col2
, col3
, ......
FROM table2
UNION ALL
SELECT TOP 10
col1
, col2
, col3
, ......
FROM table3
)
表中有63列和大约7800万行,为了测试速度,我只选择每个表中的前10行。但是,上面的代码采用了much more time than I expected
。
此外,在从表中选择all the rows
的执行过程中,程序崩溃了几次,因为SQL无法为数据库分配新页面。 (我检查了文件大小,大约需要500 GB。)
所以我想知道:(1)这是正常的执行速度和磁盘空间的消耗吗?我是否犯了任何错误,让它变得如此之慢并占用了大量的磁盘空间? (2)我如何优化代码以使其更快?
非常感谢。