我有一個XML文件存儲在我的表records
的XML
數據類型列data
中。SQL Server查詢XML數據類型性能問題
表看起來是這樣的:
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'
我很新來SQL Server中的XML提取。我想我沒有遵循標準優化方法來提取XML元素。
那麼,任何人都可以幫助我如何優化這種情況,因爲我需要從我的xml中提取100個這樣的元素存儲爲列。
http://stackoverflow.com/users/1570000/john-cappelletti我的XML有單個數據元素,所以在這種情況下,我希望我不需要交叉應用。那麼,從績效的角度來看,應該選擇哪一個,value()還是query()? – Aarush
@JohnCappelleti在'temp表中存儲整個xml並從#temp中提取'或'直接從table.column中提取而不使用#temp'的情況下,對於我沒有重複的200s元素場景的性能差異屬性 – Aarush
@LearnByExample正確,因爲你有單個數據元素,所以不需要交叉應用。因爲你知道路徑值比查詢快。 –