Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Join con campo XML
mercoledì 08 giugno 2011 - 10.22
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
maxves
Profilo
| Newbie
12
messaggi | Data Invio:
mer 8 giu 2011 - 10:22
1606_ExecutionPlan1.zip
Salve a tutti.
Ho una SP su SQL Server 2005 che accetta 4 parametri.
Una data, 2 INT e un XML
La SP deve aggioranre il campo data e i 2 valori int a tutti i record contenuti del XML
Il campo XML è una lista di ID con la quale va fatta la join con il campo a db sempre di tipo INT.
la struttura dell XMl è la seguente
<BOLLETTINI>
<ID>4</ID>
<ID>8</ID>
<ID>9</ID>
<ID>10</ID>
<ID>11</ID>
<ID>16</ID>
<ID>17</ID>
<ID>18</ID>
</BOLLETTINI>
Capita spesso che la variabile XML contenga anche 15-20 mila ID.
In tali casi la SP impiega molto tempo.
Nell'Execution Plan si nota che la maggior parte del tempo è dovuta alla lettura dell XML (In allegato).
Il test è stato fatto con 15,700 id circa
La SP è molto semlpice è contiente solo l'update incriminato:
UPDATE T_BOLLETTINO
SET STAT_BOLL = @Stato_Bollettino, STAT_AUTO = @Stato_Autore, STAT_DATA = @Stato_Data
FROM T_BOLLETTINO
INNER JOIN @Lista_Valori.nodes ('//BOLLETTINI/ID') Temp ( Items ) ON T_BOLLETTINO.ID_BOLL = Temp.Items.value ('.', 'INT')
Mi date qualche dritta per risolvere il problema ??
Grazie
MaXiM
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 8 giu 2011 - 14:53
>Capita spesso che la variabile XML contenga anche 15-20 mila
>ID.
>In tali casi la SP impiega molto tempo.
>Nell'Execution Plan si nota che la maggior parte del tempo è
>dovuta alla lettura dell XML (In allegato).
>Il test è stato fatto con 15,700 id circa
Ciao,
la colonna XML è indicizzata?
Nel caso non lo sia, approfondisci l'argomento sui Books Online:
http://msdn.microsoft.com/en-us/library/ms191497.aspx
>Grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
maxves
Profilo
| Newbie
12
messaggi | Data Invio:
mer 8 giu 2011 - 15:03
Lorenzo,
Gentilissimo per la risposta.
Un campo XML non esiste.
L'xml è un parametro che mi passa il software, e il campo id è il clustered della tabella.
Il problema è comunque risolto, prendendo spunto (o meglio copiando spudoratamente) dal tuo articolo "Leggere un file XML con SQL Server 2005" link
http://www.dotnethell.it/articles/XML-SQL-Server-2005.aspx
Utilizzando la SP SP_XML_PrepareDocument adesso il mio update dura solo 6 secondi...
Grazie ancora a te e a tutto lo staff del sito.
Massimo
MaXiM
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !