SSDTには、次のように定義されたテーブルと列ストアのインデックスがあります。
CREATE TABLE [dbo].[FactBillPayTransaction] (
[NaturalKeyText] NVARCHAR (500) NOT NULL,
[RecordEffectiveDateTime] DATETIME2 (7) NOT NULL,
[SourceEffectiveUTCDateTime] DATETIME2 (7) NOT NULL,
[InsertJobRunSequenceNumber] BIGINT NOT NULL,
[LatestUpdateJobRunSequenceNumber] BIGINT NOT NULL,
[InsertDateTime] DATETIME2 (7) NOT NULL,
[LatestUpdateDateTime] DATETIME2 (7) NOT NULL,
[DeleteDateTime] DATETIME2 (7) NULL,
[ChangeControlChecksum] NVARCHAR (32) NOT NULL,
.......More Columns
);
GO
CREATE CLUSTERED COLUMNSTORE INDEX [ci_cs_FactBillPayTransaction]
ON [dbo].[FactBillPayTransaction];
When I generate scripts i get the following for SQL Server 2014:
CREATE TABLE [dbo].[FactBillPayTransaction] (
[NaturalKeyText] NVARCHAR (500) NOT NULL,
[RecordEffectiveDateTime] DATETIME2 (7) NOT NULL,
[SourceEffectiveUTCDateTime] DATETIME2 (7) NOT NULL,
[InsertJobRunSequenceNumber] BIGINT NOT NULL,
[LatestUpdateJobRunSequenceNumber] BIGINT NOT NULL,
[InsertDateTime] DATETIME2 (7) NOT NULL,
[LatestUpdateDateTime] DATETIME2 (7) NOT NULL,
[DeleteDateTime] DATETIME2 (7) NULL,
[ChangeControlChecksum] NVARCHAR (32) NOT NULL,
.......More Columns
);
CREATE CLUSTERED INDEX [ci_cs_FactBillPayTransaction]
ON [dbo].[FactBillPayTransaction]([NaturalKeyText]);
CREATE CLUSTERED COLUMNSTORE INDEX [ci_cs_FactBillPayTransaction]
ON [dbo].[FactBillPayTransaction] WITH (DROP_EXISTING = ON);
2つのcreate "index"コマンドが正しくないようです。また、なぜ1つの列への参照があるのですか?
これは製品の欠陥である必要がありますが、それでも最終結果は正しいものになります。
すべての行ストアインデックスは少なくとも1つの列を参照する必要があるため、生成された最初のCREATE CLUSTEREDINDEXステートメントで1つの列への参照があります。
CREATE CLUSTERED INDEXが生成される理由の最も可能性の高い説明は、列ストアインデックスのパーティション化要件の背後にあります。データはパーティション整列する必要があるため、最初にパーティションスキームでクラスター化インデックスを作成する必要があります(各行をそのパーティションに割り当てるため)。このDROP_EXISTING=TRUE
句を使用して、同じパーティションスキームでクラスター化列ストアインデックスを作成する必要があります。したがって、パーティションテーブルがある場合、構文は次のようになります。
CREATE CLUSTERED INDEX [ci_cs_FactBillPayTransaction]
ON [dbo].[FactBillPayTransaction]([NaturalKeyText])
ON COLUMNSTORE_PARTITION_SCHEME (NaturalKeyText);
CREATE CLUSTERED COLUMNSTORE INDEX [ci_cs_FactBillPayTransaction]
ON [dbo].[FactBillPayTransaction] WITH (DROP_EXISTING = ON)
ON COLUMNSTORE_PARTITION_SCHEME (NaturalKeyText);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加