道歉,如果我愤怒与论坛重复的问题。无法在论坛中找到正确的解决方案,因此发布了它。SQL Server 2012:快速从SELECT中插入数百万行
我需要快速获取129991763行到游标或临时表或临时表中,并将它们处理到另一个表中。而这个目的地桌子也是巨大的桌子。
目前我使用INSERT
使用SELECT
声明(该SELECT
嵌套4级),用于提示选项一样(FAST 1000),MAXDOP 1,重新编译...等...
该过程消耗大量的时间,并没有显示任何结果或根本没有完成。
以前我用了一个提示相同的提示;但它也运行了22个多小时;我转换到INSERT
使用SELECT
。
从字面上看,我需要停止执行以上两种方法。
说实话,我是SQL Server数据库的初学者。
即使根据标准特别筛选出SELECT
中的记录;仍然需要打破4或5个块,这些块需要花费4到5个小时才能完成。
请帮忙。
感谢 Pradyumna
那么,你的问题是什么? –
尝试从129,991,763条记录中创建约1300批,每行约100,000行。不要使用游标。您还需要验证您的查询是否未被其他进程阻止。如果你的目标表有索引,你可以考虑根据已经存在的行与要插入的行的比例来删除它。 –
尝试禁用或删除目标表上的所有索引和外键约束;确保**数据库文件**足够大以容纳所有数据,以便它不必不断地扩展大小。但插入**数百万行**永远不会闪电般快 - 它会花费时间** - 你不能“优化”那段时间。 –