【发布时间】:2016-12-05 23:37:22
【问题描述】:
我有一个 XML 文件存储在我的表 records 的 XML 数据类型列 data 中。
表格如下所示:
create table records
(
id int,
type nvarchar(28),
data xml,
posted datetime
)
XML 数据:
<Properties>
<data>
<Name>novel</Name>
<Gender>Female</Gender>
<Age>32</Age>
<Salary>55k</Salary>
<Phone>123-123</Phone>
</data>
</Properties>
我目前正在使用以下查询从该 XML 列中提取数据,这在 20K 记录中花费了超过几分钟的时间。
select
id,
posteddate,
CONVERT( NVARCHAR(500), data.query('data(Properties/data/Name)') ) AS Name,
CONVERT( NVARCHAR(500), data.query('data(Properties/data/Gender)') ) AS Gender,
CONVERT( NVARCHAR(500), data.query('data(Properties/data/Age)') ) AS Age,
CONVERT( NVARCHAR(500), data.query('data(Properties/data/Salary)') ) AS Salary,
CONVERT( NVARCHAR(500), data.query('data(Properties/data/Phone)') ) AS Phone
from
records
where
type = 'personnel_xml'
谁能帮助解释我如何优化这个场景,因为我需要从存储为列的 XML 中提取 100 个这样的元素。
【问题讨论】:
标签: sql-server xml xquery sql-server-openxml