MSSQL 消息中”表Worktable” (引擎内部临时表)说明


worktable表简介

当数据库引擎在执行时,需要缓存内部表时,执行相关逻辑操作,此时会自动生成一个临时表,这个临时表就是表WorkTable。
常见生成 内部临时表的操作 over函数 group by order by union 游标
如果系统io会内存不高的情况下,使用这种引擎自动生成临时表的方式,可能导致系统变慢


例 运行以下代码(over函数)将导致生成临时表WorkTable:

 
 select a.[列1],a.[列2]/(sum(a.[列2]) over()) as t
 from [表名] a(nolock)


(325448 行受影响)
表 ‘表名’。扫描计数 9,逻辑读取 27356 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 ‘Worktable’。扫描计数 3,逻辑读取 897720 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。