Ich habe eine Heap-Tabelle, die ungefähr 104 GB Speicherplatz mit fast 3 Milliarden Zeilen benötigt. Ich versuche, einen Clustered-Index für diese Tabelle in der WeekEndingDate
Spalte [ ] zu erstellen . Ich habe ungefähr 200 GB frei in der Datendatei und ungefähr 280 GB frei in der Tempdb.
Ich habe zwei verschiedene Methoden ausprobiert. Zunächst wurde der Index mit dem folgenden Befehl direkt in der Tabelle erstellt:
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)
Ich habe es sowohl mit SORT_IN_TEMPDB = ON
als auch versucht OFF
. Bei Verwendung ON
füllte es die Tempdb und damit das Datenlaufwerk OFF
.
Eine andere Methode bestand darin, eine neue leere Tabelle mit dem erforderlichen Index zu erstellen und dann die Datensätze aus dem Heap in die neue Tabelle einzufügen. Dies schlug auch nach dem Auffüllen des Datenlaufwerks fehl.
Weitere Vorschläge, was zu tun ist. Die meisten Dinge, die ich gelesen habe, besagten, dass ich ungefähr das 1,2-fache der Größe der Tabelle benötigen würde, um beim Erstellen des Index als Arbeitsbereich verwendet zu werden. Ich habe weit mehr als das und es scheitert immer noch. Anregungen wäre dankbar.
Hier ist meine ursprüngliche Heap-Tabellenstruktur:
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
? Wenn das funktioniert, können Sie anschließend komprimieren.