2016-01-22 4 views
-1

Как бы разобрать ниже без пространства имен XML?XML Shredding Производительность 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 
    ) 
Смежные вопросы