10
私は1つのXML列を持つテーブルを持っています。 XMLの特定の属性が文字列と一致する行をフィルタリングしたいと思います。基本的にWHEREまたはHAVINGを実行します。XPath/XQueryを使用してXML列のSQLクエリをフィルタリングします
の表は、この
| id | xml |
のようなものと私は@name属性の値に一致したすべてのIDを取得したい
<xml>
<info name="Foo">
<data .../>
</info>
<xml>
に似たXMLのものになります。
私は、次の操作を行うことができた:
SELECT id, xml.query('data(/xml/info/@name)') as Value
FROM Table1
WHERE CAST(xml.query('data(/xml/info/@name)') as varchar(1024)) = @match
しかし、それは信じられないほど遅いです。
クエリの出力でより良いフィルタリング方法が必要です。
だろう
、私はまた、あなたのXML列のインデックスを持っていることを確認することをお勧めしたいです。 > [XMLインデックスの概要(SQLServerPedia.com)](http://sqlserverpedia.com/wiki/XML_Indexes_Overview) – Kev