我有一个名为tblAdmissions的表,此表中的一列名为“ProgramInformation”。此列包含xml字符串,如
<row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" num="1">
<COURSE>reference_project</COURSE>
<FEE>true</FEE>
</row>
<row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" num="2">
<COURSE>RoomID</COURSE>
<FEE>99</FEE>
</row>
我正在使用此查询通过使用交叉应用来获取此列中的值,而且速度很慢。
使用vDynamic AS( 选择
xmlProgramInformation = CAST(ProgramInformation AS XML)
FROM
tblAdmission
)
SELECT
t.p.query('COURSE' ).value('.', 'varchar(max)') AS Decipline,
t.p.query('FEE' ).value('.', 'varchar(max)') AS CourseFee
FROM
vDynamic
CROSS apply xmlProgramInformation.nodes('/DOCUMENT/ROWS/row') AS t(p)
是否有其他方法可以让我的查询快速运行。
由于
答案 0 :(得分:0)
您可以尝试的一些事情,从最简单到实施再到最困难:
如果所有数据都是XML格式,则将nvarchar更改为XML列。我相对肯定这不会对你的表现产生明显的影响,但它是下一步的基础。
实现XML索引。查看在线书籍了解详情
如果您要查询的属性已修复,那么您可能需要继续将它们分解为固定的表格格式。 SQL Server更喜欢SQL; XML和XQuery应该用于临时探索和/或变革工作。