2016-01-22 86 views
-1

如何在不使用XML命名空间的情况下解析下面的内容?XML分解SQL Server性能

由于SQL Server 2008 R2,我有一个超时问题,我打算利用查询提示OPTION (OPTIMIZE FOR (@xml = NULL))但不愿意。

如果您需要更多关于查询的说明,请告诉我。感谢您的帮助。

DECLARE @i BIGINT , @rawxml XML 

SELECT TOP 1 
    @i = prl.ID, 
    @rawxml = prl.d 
FROM 
    s.dbo.l prl 
WHERE 
    NOT EXISTS (SELECT 1 
       FROM dbo.p 
       WHERE id = prl.ID) 
ORDER BY 
    prl.ID 

;WITH XMLNAMESPACES ('http://xxx.xsd' AS pd) 
INSERT INTO P (x, y) 
    SELECT 
     rn = NULLIF(X.ps.value('(./@rn)[1]', 'varchar(25)'), '') 
    FROM 
     @rawxml.nodes('/pd:ps/pd:p') AS X(ps) 
+1

请提供您的XML结构... – Devart

回答

0

尝试使用*

INSERT INTO dbo.p /*(...)*/ 
SELECT l.ID, NULLIF(t.c.value('@rn', 'VARCHAR(25)'), '') 
FROM dbo.l l 
CROSS APPLY d.nodes('/*:ps/*:p') t(c) 
WHERE NOT EXISTS (
     SELECT 1 
     FROM dbo.p p 
     WHERE p.ID = l.ID 
    )