SQLSERVER 临时表 和 表变量 有区别吗
💡
原文中文,约2700字,阅读约需7分钟。
📝
内容提要
临时表和表变量都存储在tempdb中,临时表有统计信息,可以后续修改,表变量没有统计信息,不可以后续修改,临时表是session级的,表变量是批处理级的,表变量比临时表更轻量级,但要注意记录条数不要严重偏移默认的1条,以免影响执行计划。
🎯
关键要点
- 临时表和表变量都存储在tempdb中。
- 临时表有统计信息,可以后续修改;表变量没有统计信息,不可后续修改。
- 临时表是session级的,表变量是批处理级的。
- 表变量比临时表更轻量级,但记录条数应控制在默认的1条附近。
- 临时表和表变量都可以占用tempdb的数据页。
- 临时表的执行计划依赖于统计信息,而表变量的执行计划使用默认值1条。
- 临时表可以后续修改字段和索引,表变量不能。
- 表变量在高频创建和删除操作中减轻系统压力,但记录条数偏离默认值会影响执行计划。
- 建议小白使用临时表,高手可以考虑使用表变量。
➡️