我公司的“联系人”表中有一个字段。在该表中,有一个XML类型列。该列保存有关特定联系人的杂项数据。例如。
<contact>
<refno>123456</refno>
<special>a piece of custom data</special>
</contact>
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
此方法可以正常运行,但是服务器需要一段时间才能响应。我还研究了使用nodes()函数来解析XML节点,并使用existing()来测试节点是否拥有我要搜索的值。
有谁知道查询XML列的更好方法?
如果要进行一次写入和大量读取,请在写入时进行分析命中,然后将数据转换为更易于查询的格式。第一个建议是将它们解析为一个相关但独立的表,其中包含名称/值/ contactID列。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。