SQL Server连接策略选择逻辑及嵌套循环连接性能异常问询
SQL Server连接策略选择异常分析问题
- 执行场景:在SQL Server中执行表连接操作,第一个输入临时表数据量为400,000条;第二个输入同样为临时表,当它的数据量处于3万4万条区间时,查询效率很高,但当数据量降至20003000条时,查询耗时骤增。
- 执行计划观察:数据量较小时,SQL Server选择了嵌套循环连接作为连接策略,而数据量较大时未采用该方式。
- 核心疑问:
- 由于知晓变量表无统计信息,特意使用临时表,但仍无法理解为什么2000~3000条数据的临时表会让优化器选择嵌套循环连接。
- 查阅MSDN文档得知,当一个连接输入小于10行、且另一输入数据量较大且连接列存在索引时,嵌套循环连接性能最优,但该规则完全无法解释当前场景。
- 补充说明:存在分别对应高效查询和慢查询的两份执行计划(原外部链接已移除)。
已尝试查找相关技术资料,但未找到能解释该现象的有效内容。
内容的提问来源于stack exchange,提问作者Leon
相关产品推荐
相关产品推荐

