Jer*_*ell 3 sql-server temp-tables
我和另一位开发人员正在讨论哪种类型的表更适合我们的任务.它基本上是一个缓存,我们将在一天结束时截断.就个人而言,我认为没有任何理由为此使用除普通表之外的任何东西,但他想使用全局临时表.
一个或另一个有什么好处吗?
tempdb如果这只是在服务重启时可以承受的瞬态数据,或者如果数据不是瞬态的,则使用普通表.
tempdb 在日志记录要求方面略微提高效率.
一旦所有引用连接都是创建表关闭的连接,全局临时表就会被删除.
编辑:关注@ cyberkiwi的编辑.BOL确实明确地说
全局临时表在创建后对任何用户和任何连接都是可见的,并且在引用该表的所有用户与SQL Server实例断开连接时将被删除.
在我的测试中,我也无法获得这种行为.
CREATE TABLE ##T (i int)
INSERT INTO ##T values (1)
SET CONTEXT_INFO 0x01
Run Code Online (Sandbox Code Playgroud)
INSERT INTO ##T VALUES(4)
WAITFOR DELAY '00:01'
INSERT INTO ##T VALUES(5)
Run Code Online (Sandbox Code Playgroud)
SELECT OBJECT_ID('tempdb..##T')
declare @killspid varchar(10) = (select 'kill ' + cast(spid as varchar(5)) from sysprocesses where context_info=0x01)
exec (@killspid)
SELECT OBJECT_ID('tempdb..##T') /*NULL - But 2 is still
running let alone disconnected!*/
Run Code Online (Sandbox Code Playgroud)