Ho una tabella heap che occupa circa 104 GB di spazio su disco con quasi 3 miliardi di righe. Sto cercando di creare un indice cluster su questa tabella nella WeekEndingDate
colonna [ ]. Ho circa 200 GB gratuiti nel file di dati e circa 280 GB gratuiti nel tempdb.
Ho provato due metodi diversi. Il primo era creare l'indice direttamente sulla tabella con il seguente comando:
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)
Ho provato entrambi con SORT_IN_TEMPDB = ON
e OFF
. Durante l'utilizzo ON
ha riempito il tempdb e con OFF
esso ha riempito l'unità dati.
Un altro metodo consisteva nel creare una nuova tabella vuota con l'indice necessario e quindi inserire i record dall'heap nella nuova tabella. Anche questo non è riuscito dopo aver riempito l'unità dati.
Altri suggerimenti su cosa fare. La maggior parte delle cose che ho letto ha affermato che avrei bisogno di circa 1,2 volte la dimensione della tabella da utilizzare come spazio di lavoro durante la creazione dell'indice. Ho molto di più e continua a fallire. Tutti i suggerimenti sarebbero apprezzati.
Ecco la mia struttura originale della tabella heap:
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
? Se funziona, puoi comprimerlo in seguito.