J'ai une table de tas qui prend environ 104 Go d'espace disque avec près de 3 milliards de lignes. J'essaie de créer un index cluster sur cette table dans la WeekEndingDate
colonne [ ]. J'ai environ 200 Go de libre dans le fichier de données et environ 280 Go de libre dans le tempdb.
J'ai essayé deux méthodes différentes. La première consistait à créer l'index directement sur la table avec la commande suivante:
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)
Je l'ai essayé à la fois avec SORT_IN_TEMPDB = ON
et OFF
. Lors de son utilisation, ON
il a rempli le tempdb et avec OFF
lui a rempli le lecteur de données.
Une autre méthode consistait à créer une nouvelle table vide avec l'index nécessaire, puis à insérer les enregistrements du tas dans la nouvelle table. Cela a également échoué après le remplissage du lecteur de données.
Toutes autres suggestions sur quoi faire. La plupart des choses que j'ai lues ont déclaré que j'aurais besoin d'environ 1,2 fois la taille de la table pour être utilisé comme espace de travail lors de la création de l'index. J'ai bien plus que ça et ça échoue toujours. Toute suggestion serait appréciée.
Voici ma structure de table de tas d'origine:
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
? Si cela fonctionne, vous pouvez ensuite compresser.