Mai*_*aik 6 sql-server sql-server-2008
我有时在SQL Server 2008上使用切换表来快速传输2个表之间的数据,但我不知道它是如何工作的,这只是a之间的区别insert into T2 select * from T1.
有人可以详细解释它的工作原理和区别吗?
此外,我注意到如果两个表都不是克隆,则此语句不起作用.例如,如果我在一个表中有一个索引而在另一个表中没有,则它会失败.
C B*_*C B 12
使用语句插入数据
insert into T2 select * from T1
Run Code Online (Sandbox Code Playgroud)
通过将数据从T1插入T2来加载数据.传输(切换)分区时,数据不会物理移动; 只有关于数据位置的元数据才会发生变化.
在切换分区之前,必须满足几个一般要求:
切换分区的一般要求
传输分区时,数据不会物理移动; 只有关于数据位置的元数据才会发生变化.在切换分区之前,必须满足几个一般要求:
两个表必须在SWITCH操作之前存在.在执行切换操作之前,数据库中必须存在要从中移动分区的表(源表)和接收分区的表(目标表).
接收分区必须存在且必须为空.无论是将表作为分区添加到现有分区表,还是将分区从一个分区表移动到另一个分区表,接收新分区的分区必须存在且必须是空分区.
接收的非分区表必须存在且必须为空.如果要重新分配分区以形成一个非分区表,则接收新分区的表必须存在,并且它必须是空的非分区表.
分区必须位于同一列.如果要将分区从一个分区表切换到另一个分区表,则必须在同一列上对这两个表进行分区.
源表和目标表必须共享同一文件组.ALTER TABLE ... SWITCH语句的源表和目标表必须位于同一文件组中,并且它们的大值列必须存储在同一文件组中.任何相应的索引,索引分区或索引视图分区也必须位于同一文件组中.但是,文件组可以与相应表或其他相应索引的文件组不同.
此信息和更多信息位于此处:
https://technet.microsoft.com/en-us/library/ms191160(v=sql.105).aspx