小编sca*_*cci的帖子

INSERT INTO #temp 花费的时间是 SELECT INTO #temp 的 1000 倍

我正在粉碎传递给我的 xml blob 并加载临时表以进行进一步处理。我在整个过程中注意到的一件事是,执行一个INSERT INTO大约需要 20 分钟,而执行一个SELECT INTO则需要几秒钟。数据库统计数据是最新的,我们正在运行日常维护计划,所以不确定发生了什么。我知道SELECT INTO绕过日志会使其更快,但我不认为INSERT INTO会更糟。

编辑:根据评论添加更多细节

为什么 INSERT INTO 比SELECT INTO临时表花费的时间长得多。

查询示例如下。我正在粉碎 XML 并将其插入到临时表中,我已将INSERT INTOSELECT INTO注释掉。该INSERT INTO仅售100条记录中显示382,000+而逻辑读取SELECT INTO正显示出无法比拟的。

;with cteScen AS (
SELECT    DENSE_RANK() OVER ( ORDER BY scenario_node ) AS scenario ,
        RANK() OVER ( PARTITION BY scenario_node ORDER BY scen_val ) AS level_order ,
        scen_val.value('text-value[1]',
                       'varchar(100)') AS 'scen_value' ,
        scen_val.value('(distribution/@id)[1]',
                       'int') AS 'dist'
FROM      @scenarioXML.nodes('/scenarios/scenario') …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2008-r2

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

sql-server ×1

sql-server-2008-r2 ×1