我必须在我的XML类型列中搜索邮政编码。我在桌面上创建了一个主XML索引。
我正在关注this文章,以了解这些概念。
我的查询看起来像这样
select *some fields* from table_name where
[xml_column].exist(''/Session/Entries/Entry[@DataItemId="Address.Postcode" and contains(upper-case(.), "@Postcode")]'') = 1
@Postcode是输入参数,用户可以输入完整或部分邮政编码
现在根据链接,
如果您的工作负载在XML列上显着使用路径表达式,则PATH辅助XML索引可能会加快您的工作量。最常见的情况是在Transact-SQL的WHERE子句中对XML列使用exists()方法。
但后来我对以下陈述感到困惑
如果您的工作负载从单个XML中检索多个值 实例通过使用路径表达式,在每个XML中聚类路径 PROPERTY索引中的实例可能会有所帮助。通常这种情况 当对象的属性是属性包场景时发生 获取并且其主键值已知。
我在exist()
子句中使用了where
方法,但我正在返回多条记录。
我很困惑我应该根据我的查询创建哪个辅助索引。我倾向于倾向于物业指数。
我可以创建所有3并让SQL处理哪一个选择??这会增加节点表的大小并妨碍数据库的速度吗?
我的部分XML看起来像这样
<Session>
<Entries>
<Entry DataItemId="AccountNumber" Type="Pattern" Source="SessionStore">
<Value>212312311</Value>
</Entry>
<Entry DataItemId="SortCode" Type="Pattern" Source="SessionStore">
<Value>10-20-30</Value>
</Entry>
<Entry DataItemId="AccountName" Type="Free" Source="SessionStore">
<Value>XXXXXXXXX</Value>
</Entry>
<Entry DataItemId="Let" Type="Set" Source="SessionStore">
<Value>LET</Value>
</Entry>
<Entry DataItemId="Relative" Type="Boolean" Source="SessionStore">
<Value>False</Value>
</Entry>
<Entry DataItemId="LtdCompany" Type="Boolean" Source="SessionStore">
<Value>False</Value>
</Entry>
<Entry DataItemId="Address.Postcode" Type="Pattern" Source="SessionStore">
<Value>GL8 1TT</Value>
</Entry>
<Entry DataItemId="Address.Line1" Type="Free" Source="SessionStore">
<Value>Askdaskdaoiksd</Value>
</Entry>
<Entry DataItemId="Address.Line2" Type="Free" Source="SessionStore">
<Value>Ojasuiodjaisjdsa</Value>
</Entry>
<Entry DataItemId="PropertyType" Type="Set" Source="SessionStore">
<Value>DH</Value>
</Entry>
<Entry DataItemId="Tenure" Type="Set" Source="SessionStore">
<Value>1</Value>
</Entry>
<Entry DataItemId="BuiltThisYear" Type="Boolean" Source="SessionStore">
<Value>False</Value>
</Entry>
<Entry DataItemId="YearBuilt" Type="Integer" Source="SessionStore">
<Value>1960</Value>
</Entry>
<Entry DataItemId="StdConstruction" Type="Boolean" Source="SessionStore">
</Entries>
</Session>
更新
我做了一些挖掘,然后与我的高级DBA朋友聊天,他建议我创建一个PATH索引。查询似乎比以前更快。