alter table开关在SQL Server上是如何工作的?

eagi6jfj  于 2022-12-17  发布在  SQL Server
关注(0)|答案(1)|浏览(170)

我在SQL Server 2008上使用切换表在2个表之间快速传输数据,但我不知道它是如何工作的,这与insert into T2 select * from T1有什么区别。
有人能详细解释一下它是如何工作的和区别吗?
而且我注意到如果两个表都不是克隆的,这个语句就不起作用。例如,如果我在一个表中有一个索引,而在另一个表中没有,那么它就失败了。

0g0grzrc

0g0grzrc1#

使用语句插入数据

insert into T2 select * from T1

通过将数据从T1插入到T2来加载数据。当转移(切换)分区时,数据没有物理移动;只有关于数据位置的元数据改变。
在切换分区之前,必须满足几个一般要求:

切换分区的一般要求:

当转移分区时,数据不是物理移动的;只有有关数据位置的元数据发生更改。在切换分区之前,必须满足以下几个一般要求:
1.在执行SWITCH操作之前,两个表都必须存在。要从中移动分区的表(源表)和接收分区的表(目标表)必须在数据库中存在,然后才能执行切换操作。
1.接收分区必须存在并且必须为空。无论是将表作为分区添加到已存在的分区表中,还是将分区从一个分区表移动到另一个分区表,接收新分区的分区都必须存在并且必须为空分区。
1.接收的未分区表必须存在并且必须为空。如果要重新分配分区以形成一个未分区表,则接收新分区的表必须存在并且必须为空的未分区表。
1.分区必须在同一列上。如果要将分区从一个分区表切换到另一个分区表,则两个表必须在同一列上分区。
1.源表和目标表必须共享同一文件组。ALTER TABLE... SWITCH语句的源表和目标表必须驻留在同一文件组中,并且它们的大值列必须存储在同一文件组中。任何相应的索引、索引分区或索引视图分区也必须驻留在同一文件组中。但是,文件组可以不同于对应表或其它对应索引的文件组。
此信息和更多信息位于此处:
https://technet.microsoft.com/en-us/library/ms191160(v=sql.105).aspx

相关问题