我的工作地点正在进行一项运动,以摆脱使用#temp 表,而是使用带有 SPID 的永久物理表。每当一个人以前插入到一个#temp 表中时,现在就需要一个- 以及在例如存储过程的开头的INSERT INTO dbo.MyPermanentTable (SPID, ...) VALUES (@@SPID, ...)
一堆语句。DELETE FROM dbo.MyPermanentTable WHERE SPID = @@SPID
此外,不用说,在使用这些“用于存储临时数据的永久表”的任何地方,都必须小心包含一个WHERE SPID = @@SPID
.
转向这种做法背后的逻辑是,它将提高运行查询的服务器的整体性能(通过减少 tempdb 中的 I/O 和争用)。出于多种原因,我不热衷于这种方法 - 它很丑陋,有潜在危险,而且似乎很可能会损害那些使用新方案的查询的性能。
有没有人对这种或类似的方法来消除#temp 表有任何经验?