У меня есть таблица кучи, которая занимает около 104 ГБ дискового пространства с почти 3 миллиардами строк. Я пытаюсь создать кластерный индекс для этой таблицы в WeekEndingDate
столбце [ ]. У меня около 200 ГБ бесплатно в файле данных и около 280 ГБ бесплатно в базе данных tempdb.
Я пробовал два разных метода. Сначала нужно было создать индекс непосредственно на таблице с помощью следующей команды:
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)
Я попробовал это и с SORT_IN_TEMPDB = ON
и OFF
. При ON
его использовании заполняется база данных tempdb и вместе с OFF
ней заполняется диск с данными.
Другой метод состоял в том, чтобы создать новую пустую таблицу с необходимым индексом и затем вставить записи из кучи в новую таблицу. Это также не удалось после заполнения диска данных.
Любые другие предложения о том, что делать. В большинстве прочитанных мной статей говорилось, что для создания индекса мне понадобится размер таблицы, примерно в 1,2 раза превышающий размер таблицы. У меня есть намного больше, и это все еще не удается. Мы ценим любые предложения.
Вот моя оригинальная структура таблицы кучи:
CREATE TABLE [dbo].[WT_FOLD_HISTORY](
[WeekEndingDate] [varchar](50) NULL,
[Division] [varchar](50) NULL,
[Store] [varchar](50) NULL,
[SKUNumber] [varchar](50) NULL,
[UPC] [varchar](50) NULL,
[SalesUnits] [varchar](50) NULL,
[SalesCost] [varchar](50) NULL,
[SalesRetail] [varchar](50) NULL,
[InventoryUnits] [varchar](50) NULL,
[InventoryCost] [varchar](50) NULL,
[InventoryRetail] [varchar](50) NULL,
[OnOrderUnits] [varchar](50) NULL,
[OnOrderCost] [varchar](50) NULL,
[OnOrderRetail] [varchar](50) NULL,
[ReceiptUnits] [varchar](50) NULL,
[ReceiptCost] [varchar](50) NULL,
[ReceiptRetail] [varchar](50) NULL,
[PermanentMarkdowns] [varchar](50) NULL,
[ReturnsToVendor] [varchar](50) NULL,
[POSMarkdowns] [varchar](50) NULL,
[TimeFK] [smallint] NULL,
[LocationFK] [int] NULL,
[ItemFK] [int] NULL
) ON [AcademySports_DataFG1]
DATA_COMPRESSION=NONE
? Если это работает, вы можете сжать потом.