テーブルの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>
現在、次のクエリを使用して、20K レコードで数分以上かかる XML 列からデータを抽出しています。
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 個の要素を抽出する必要があるため、このシナリオを最適化する方法を説明できる人はいますか?