我有时会在SQL Server 2008上使用switch table快速传输两个表之间的数据,但我不知道它是如何工作的,以及与insert into T2 select * from T1
相比的区别。
有人可以详细解释一下它是如何工作的以及区别吗?
此外,我注意到如果这两个表不是克隆的,该语句就无法正常工作。例如,如果一个表中有一个索引而另一个表中没有,则会失败。
我有时会在SQL Server 2008上使用switch table快速传输两个表之间的数据,但我不知道它是如何工作的,以及与insert into T2 select * from T1
相比的区别。
有人可以详细解释一下它是如何工作的以及区别吗?
此外,我注意到如果这两个表不是克隆的,该语句就无法正常工作。例如,如果一个表中有一个索引而另一个表中没有,则会失败。
使用语句插入数据
insert into T2 select * from T1
通过将来自 T1 的数据插入到 T2 中,加载数据。当转移(切换)分区时,数据并不会被物理移动,只有关于数据位置的元数据会发生更改。
在切换分区之前,必须满足以下几个通用要求:
切换分区的通用要求:
当分区被转移时,数据并不会被物理移动,只有关于数据位置的元数据会发生更改。在执行切换操作之前,必须满足以下几个通用要求:
更多信息请参见此处:
https://technet.microsoft.com/zh-cn/library/ms191160(v=sql.105).aspx
SWITCH
的工作方式是仅更新分区引用,而不是在物理上移动数据。而在您的示例中,它将复制所有数据到新表中。[相关MSDN文章。] (https://technet.microsoft.com/en-us/library/ms191160(v=sql.105).aspx) - Siyual