在我的工作场所中,正在逐渐摆脱使用#temp表,而是使用具有SPID的永久物理表的趋势。只要以前将INSERTINSERT插入#temp表中,现在INSERT INTO dbo.MyPermanentTable (SPID, ...) VALUES (@@SPID, ...)
都需要一个- DELETE FROM dbo.MyPermanentTable WHERE SPID = @@SPID
在存储过程开始时加上一堆语句。此外,不用说,在使用这些“用于存储临时数据的永久性表”的地方,都必须小心包含一个WHERE SPID = @@SPID
。
采取这种做法的逻辑是,它将提高运行查询的服务器的整体性能(通过减少tempdb中的I / O和争用)。由于多种原因,我并不热衷于这种方法-这种方法很丑陋,潜在危险,而且似乎很可能损害那些使用新方案的查询的性能。
有没有人有这种消除#temp表的方法或类似方法的经验?