2016-01-22 83 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 
    )