私の会社の「連絡先」テーブルにフィールドがあります。そのテーブルには、XML型の列があります。列には、特定の連絡先に関するその他のデータが格納されます。例えば。 contact
以下SQLServer 2005のXML列のクエリ
<contact>
<refno>123456</refno>
<special>a piece of custom data</special>
</contact>
タグは、連絡先ごとに異なることができ、と私は同じテーブル内のリレーショナルデータ列と一緒にこれらのフラグメント を照会しなければなりません。
SELECT c.id AS ContactID,c.ContactName as ForeName,
c.xmlvaluesn.value('(contact/Ref)[1]', 'VARCHAR(40)') as ref,
INNER JOIN ParticipantContactMap pcm ON c.id=pcm.contactid
AND pcm.participantid=2140
WHERE xmlvaluesn.exist('/contact[Ref = "118985"]') = 1
この方法は、[OK]を動作しますが、それはサーバーが応答するまでの時間がかかります:
私のような構造を使用していました。 また、nodes()関数を使ってXMLノードを解析し、exist()を使ってノードが検索している値を保持しているかどうかを調べました。
誰かがXML列をクエリするより良い方法を知っていますか? @pauljetteで言及したページに加えて
時間がかかると、サーバーの応答時間が長くかかったり、クエリの作成に多大な労力を要したりしますか? – Espo
私は、サーバーが結果を返すのに時間がかかることを意味します。 – nialljsmith