临时表上的索引在表被删除的时候会被删除吗?

Posted

技术标签:

【中文标题】临时表上的索引在表被删除的时候会被删除吗?【英文标题】:Are indexes on temporary tables deleted when the table is deleted? 【发布时间】:2010-09-10 15:34:33 【问题描述】:

以下 SQL 是否也会删除索引 - 还是必须单独删除?

CREATE TABLE #Tbl (field int)

CREATE NONCLUSTERED INDEX idx ON #Tbl (field)

DROP TABLE #Tbl

【问题讨论】:

【参考方案1】:

是的。您可以在 MSSQL 帮助中搜索 CREATE INDEX 文章,那里说:

"索引可以临时创建 桌子。当表被删除或 会话结束,所有索引和 触发器被丢弃。”

【讨论】:

显然。如果书的所有页面都撕掉了,索引也没用,也应该撕掉:) 这就是我的想法,但我遇到的问题是,当我重新创建临时表然后尝试重新创建索引(聚集主键约束)时,我收到此错误:CREATE UNIQUE INDEX 语句终止,因为为对象名称“dbo.##TempFormattedSnapshot”和索引名称“PK_TempSampleID”找到重复键。重复键值为 (422097)。【参考方案2】:

它将被自动删除,因为没有任何东西可以索引。在这方面将其视为子对象。

【讨论】:

【参考方案3】:

drop table 将删除索引。 Drop Index 采用索引名称和表名称。

在这种情况下是 DROP INDEX idc ON #tbl

如果要删除索引但要离开表,可以调用它。

【讨论】:

以上是关于临时表上的索引在表被删除的时候会被删除吗?的主要内容,如果未能解决你的问题,请参考以下文章

临时表与中间表

postgresql----temporary table和unlogged table

使用临时表上的函数检查约束

SQL Server 表变量和临时表的区别

如何在 SQL Server 2012 中创建的临时表上查找索引列表

临时表,临时表什么时候删除