我有一个堆表,它占用大约 104 GB 的磁盘空间,几乎有 30 亿行。我正在尝试在 [ WeekEndingDate
] 列上的该表上创建聚集索引。我在数据文件中有大约 200 gb 的空闲空间,在 tempdb 中有大约 280 gb 的空闲空间。
我尝试了两种不同的方法。首先是使用以下命令直接在表上创建索引:
CREATE CLUSTERED INDEX CX_WT_FOLD_HISTORY
ON WT_FOLD_HISTORY (WeekEndingDate ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = ON,
IGNORE_DUP_KEY = OFF
, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON,
DATA_COMPRESSION = PAGE)
Run Code Online (Sandbox Code Playgroud)
我用SORT_IN_TEMPDB = ON
和都试过了OFF
。使用时ON
它填满了 tempdb 并用OFF
它填满了数据驱动器。
另一种方法是创建一个具有所需索引的新空白表,然后将堆中的记录插入到新表中。这在填充数据驱动器后也失败了。
关于做什么的任何其他建议。我读过的大多数内容都表明,在创建索引时,我需要大约 1.2 倍的表大小才能用作工作区。我有更多的方法,但它仍然失败。任何建议,将不胜感激。
这是我原来的堆表结构:
CREATE TABLE [dbo].[WT_FOLD_HISTORY](
[WeekEndingDate] [varchar](50) NULL,
[Division] [varchar](50) NULL, …
Run Code Online (Sandbox Code Playgroud)