l.l*_*ith 4 performance sql-server partitioning sql-server-2012 query-performance
我想使用分区 ID 从特定分区中删除数据。我收到了从 SQL 2016 的特定分区截断数据的查询,但没有找到任何较低版本的查询。
我尝试在下面的查询中只删除分区 ID 为 14 和 15 的分区中的数据。
delete from partitiontable1 WITH (PARTITIONS (14 to 15))
Run Code Online (Sandbox Code Playgroud)
delete 语句会删除分区本身和数据吗?
我想保持分区完整并从特定分区中删除数据。说,我在一个表上创建了分区,它有 5 个分区(1、2、3、4、5),我只想从第二个和第三个分区中删除数据。
此删除语句是无效的 SQL Server 2012 语法,因此它只会引发错误。
删除分区及其关联的边界是使用MERGE
DDL完成的;DML 语句如DELETE
从不删除分区。
从 SQL 2014 及更早版本中的分区中删除所有行的最有效方法是使用SWITCH
(SQL 2016 允许使用 指定特定分区TRUNCATE
)。要使用 SWITCH,请创建一个具有相同架构和索引的类似分区的临时表。然后,您可以在表之间切换数据作为元数据操作,然后TRUNCATE
是暂存表。
ALTER TABLE dbo.YourTable
SWITCH PARTITION 1 TO dbo.YourTable_Staging PARTITION 1;
ALTER TABLE dbo.YourTable
SWITCH PARTITION 2 TO dbo.YourTable_Staging PARTITION 2;
ALTER TABLE dbo.YourTable
SWITCH PARTITION 3 TO dbo.YourTable_Staging PARTITION 3;
ALTER TABLE dbo.YourTable
SWITCH PARTITION 4 TO dbo.YourTable_Staging PARTITION 4;
ALTER TABLE dbo.YourTable
SWITCH PARTITION 5 TO dbo.YourTable_Staging PARTITION 5;
TRUNCATE TABLE dbo.YourTable_Staging;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11039 次 |
最近记录: |