SQL Server:多个 INSERT 语句与具有多个值的单个 INSERT – 性能悖论
问题: 基准测试令人惊讶地表明,执行 1000 个单独的 INSERT
语句比执行具有 1000 个 INSERT
子句的单个 VALUES
语句更快。
原因: SQL Server 的查询处理涉及解析后的关键“绑定”或“代数化”阶段。此阶段检测并处理 INSERT
语句中的重复值,构建优化的执行计划。 此阶段所需的时间随着独特值的数量急剧增加。
绩效影响者:
INSERT
语句有益,但自动参数化可能会成为大量值的瓶颈,从而影响性能。执行计划分析:
INSERT
的单个 VALUES
显示超过 250 个 VALUES
子句时编译时间急剧增加,表明转向效率较低的非参数化计划。实际意义:
INSERT
操作,使用多个单独的 INSERT
语句可能会更快。INSERT
操作,具有多个 INSERT
的单个 VALUES
可能仍然更有效。进一步考虑:
INSERT
语句中使用用户定义函数 (UDF) 会对性能产生负面影响。以上是在 SQL Server 中,什么时候使用多个 INSERT 语句比使用多个值的单个 INSERT 更快?的详细内容。更多信息请关注PHP中文网其他相关文章!