我正在粉碎传递给我的 xml blob 并加载临时表以进行进一步处理。我在整个过程中注意到的一件事是,执行一个INSERT INTO大约需要 20 分钟,而执行一个SELECT INTO则需要几秒钟。数据库统计数据是最新的,我们正在运行日常维护计划,所以不确定发生了什么。我知道SELECT INTO绕过日志会使其更快,但我不认为INSERT INTO会更糟。
编辑:根据评论添加更多细节
为什么 INSERT INTO 比SELECT INTO临时表花费的时间长得多。
查询示例如下。我正在粉碎 XML 并将其插入到临时表中,我已将INSERT INTO和SELECT 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)