我在SQL Server 2008上使用切换表在2个表之间快速传输数据,但我不知道它是如何工作的,这与insert into T2 select * from T1有什么区别。有人能详细解释一下它是如何工作的和区别吗?而且我注意到如果两个表都不是克隆的,这个语句就不起作用。例如,如果我在一个表中有一个索引,而在另一个表中没有,那么它就失败了。
insert into T2 select * from T1
0g0grzrc1#
使用语句插入数据
通过将数据从T1插入到T2来加载数据。当转移(切换)分区时,数据没有物理移动;只有关于数据位置的元数据改变。在切换分区之前,必须满足几个一般要求:
切换分区的一般要求:
当转移分区时,数据不是物理移动的;只有有关数据位置的元数据发生更改。在切换分区之前,必须满足以下几个一般要求:1.在执行SWITCH操作之前,两个表都必须存在。要从中移动分区的表(源表)和接收分区的表(目标表)必须在数据库中存在,然后才能执行切换操作。1.接收分区必须存在并且必须为空。无论是将表作为分区添加到已存在的分区表中,还是将分区从一个分区表移动到另一个分区表,接收新分区的分区都必须存在并且必须为空分区。1.接收的未分区表必须存在并且必须为空。如果要重新分配分区以形成一个未分区表,则接收新分区的表必须存在并且必须为空的未分区表。1.分区必须在同一列上。如果要将分区从一个分区表切换到另一个分区表,则两个表必须在同一列上分区。1.源表和目标表必须共享同一文件组。ALTER TABLE... SWITCH语句的源表和目标表必须驻留在同一文件组中,并且它们的大值列必须存储在同一文件组中。任何相应的索引、索引分区或索引视图分区也必须驻留在同一文件组中。但是,文件组可以不同于对应表或其它对应索引的文件组。此信息和更多信息位于此处:https://technet.microsoft.com/en-us/library/ms191160(v=sql.105).aspx
1条答案
按热度按时间0g0grzrc1#
使用语句插入数据
通过将数据从T1插入到T2来加载数据。当转移(切换)分区时,数据没有物理移动;只有关于数据位置的元数据改变。
在切换分区之前,必须满足几个一般要求:
切换分区的一般要求:
当转移分区时,数据不是物理移动的;只有有关数据位置的元数据发生更改。在切换分区之前,必须满足以下几个一般要求:
1.在执行SWITCH操作之前,两个表都必须存在。要从中移动分区的表(源表)和接收分区的表(目标表)必须在数据库中存在,然后才能执行切换操作。
1.接收分区必须存在并且必须为空。无论是将表作为分区添加到已存在的分区表中,还是将分区从一个分区表移动到另一个分区表,接收新分区的分区都必须存在并且必须为空分区。
1.接收的未分区表必须存在并且必须为空。如果要重新分配分区以形成一个未分区表,则接收新分区的表必须存在并且必须为空的未分区表。
1.分区必须在同一列上。如果要将分区从一个分区表切换到另一个分区表,则两个表必须在同一列上分区。
1.源表和目标表必须共享同一文件组。ALTER TABLE... SWITCH语句的源表和目标表必须驻留在同一文件组中,并且它们的大值列必须存储在同一文件组中。任何相应的索引、索引分区或索引视图分区也必须驻留在同一文件组中。但是,文件组可以不同于对应表或其它对应索引的文件组。
此信息和更多信息位于此处:
https://technet.microsoft.com/en-us/library/ms191160(v=sql.105).aspx