1

テーブル値関数クエリに取り組んでいます。これは、クエリ実行時間全体の約 70% を占めています。微調整には助けが必要です。

INSERT INTO #XMLTAB
SELECT ID,CAST(tab.tabxml as xml).value('(/Root/Element)[1]', 'varchar(100)')
FROM tab 
WHERE TabScore= 36

参照 :

  • #XMLTAB一時テーブルです。
  • Tabデータベース内のテーブル名です。
  • tabxml列は xml ファイルを保持します
  • tabscore別の列です。

前もって感謝します。

4

1 に答える 1

1

SQL Server XML データ型を使用しているようです。インデックスできることをご存知ですか?

これを試してください:

CREATE PRIMARY XML INDEX PXML_tab_tabxml
ON tab (tabxml)

CREATE XML INDEX IXML_tab_tabxml
ON tab (tabxml)
USING XML INDEX PXML_tab_tabxml FOR PATH;

最初のステートメントは、xml を内部構造 (インデックス行) に分割し、SQL Server がそのような逆アセンブルされた XML をより効果的にクエリできるようにします。これは PRIMARY XML INDEX と呼ばれます。

ただし、value() メソッドを使用して何らかのテーブルから XML を照会している場合は、そのような操作をさらに高速化する 2 番目のステートメントを実行することを検討してください。これは SECONDARY XML INDEX と呼ばれ、3 つの異なるタイプがあります。

XML が既に存在する大規模なテーブルにこのような XML インデックスを作成するには、時間がかかる場合があることに注意してください。

于 2013-07-24T08:36:44.900 に答える