gpt4 book ai didi

sql-server-2008 - SQL Server 2008 : Disable index on one particular table partition

转载 作者:行者123 更新时间:2023-12-04 06:53:39 25 4
gpt4 key购买 nike

我正在使用 SQL Server 2008 中的一个大表(~100.000.000 行)。经常,我需要在该表中添加和删除 ~30.000.000 行的批次。目前,在将大批量加载到表中之前,我禁用索引,插入数据,然后重建索引。我已经测量这是最快的方法。

最近,我正在考虑在这个表上实现表分区以提高速度。我将根据我的批次对表进行分区。

我的问题是,是否可以禁用一个特定分区的索引,并在再次启用之前将数据加载到该分区中?在这种情况下,我的表的其余部分将不必经历完整的索引重建,而且我的加载速度可以更快?

最佳答案

索引通常位于分区方案上。对于您正在谈论的场景,您实际上可以使用批处理(相同的结构,不同的名称)加载一个新表,然后使用 SWITCH 命令将此表作为新分区添加到现有表中。

我已经包含了用于执行此操作的代码,您需要根据您的表名对其进行修改:

DECLARE @importPart int
DECLARE @hourlyPart int

SET @importPart = 2 -- always, so long as the Import table is only made up of 1 partition

-- get the Hourly partition
SELECT
@hourlyPart = MAX(V.boundary_id) + 1
FROM
sys.partition_range_values V
JOIN sys.partition_functions F
ON V.function_id = F.function_id
AND F.name = 'pfHourly'

ALTER TABLE Import
SWITCH PARTITION @importPart
TO Hourly PARTITION @hourlyPart;

关于sql-server-2008 - SQL Server 2008 : Disable index on one particular table partition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2772738/

25 4 0