約10万行で、私は、次のような構造を持つ単純なテーブルを持っている:XMLインデックスが遅くなるダウンクエリ
CREATE TABLE [dbo].[DataPoints](
[ID] [bigint] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[ModuleID] [uniqueidentifier] NOT NULL,
[DateAndTime] [datetime] NOT NULL,
[Username] [nvarchar](100) NULL,
[Payload] [xml] NULL
)
ペイロードは、すべての行に対して次のようになります。
<payload>
<total>1000000</total>
<free>300000</free>
</payload>
次の二つクエリは、Payload
列にインデックスを作成する前に、私の開発マシンで実行するためにそれぞれ約11秒かかっています。
問題は、Payload
列にXMLインデックスを作成すると、両方のクエリが完了するまでに時間がかかります!私は知りたい:
1)これはなぜ起こっているのですか? XMLインデックスがクエリをスピードアップするとは思わないか、少なくともWHERE句でXML列の値が使用されるクエリですか?
2)私の場合に適していない場合、XMLインデックスを使用するための適切なシナリオは何でしょうか?
この
は、SQL Server上で2014年
を作成することができますか?プライマリXMLインデックスのみ、または選択XMLインデックス? https://msdn.microsoft.com/en-us/library/jj670108(v=sql.120).aspx "通常のXMLインデックスの主な制限は、XMLドキュメント全体をインデックス化することです。これはいくつかの重大な欠点につながりますが、クエリパフォーマンスの低下やインデックスメンテナンスコストの増加など、インデックスのストレージコストに関連しています。 – Dijkgraaf
通常のXMLインデックスのみです。 –
これまで、XMLインデックスと奇妙なパフォーマンスに関する質問がありました。http://dba.stackexchange.com/q/130969/70663 XMLを実際にクエリしない限り、XMLインデックスを使用しないでください** XML索引の処理速度が向上します。これをより頻繁に必要とする場合は、データを「通常の」索引付けされた表に読み込むことになります。 – Shnugo