我有一个 XML 文件存储在表的XML
数据类型列data
中records
。
该表如下所示:
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 个这样的元素。