Se distruggere l'XML sul server invece di farlo sul client è buono o cattivo dipende da una varietà di fattori, i requisiti possono essere perfettamente validi. La distruzione di XML sul server, dato l'ampio supporto di SQL Server 2005 e successivi per XML (indici XPath/XQuery/XML) è spesso un approccio molto sensato.
Tuttavia, quello che hai nel tuo post è un esempio di modellazione semantica dei dati, usando XML. Ti consiglio di leggere un paio di white paper:
- Best practice per la modellazione semantica dei dati per prestazioni e scalabilità
- Best practice XML per Microsoft SQL Server 2005
- Ottimizzazione delle prestazioni per il tipo di dati XML in SQL Server 2005
- Suggerimenti sulle prestazioni per l'utilizzo dei dati XML in SQL Server
Non so se la @table1 nel tuo esempio sia solo un esempio o la struttura dati effettiva che usi in produzione, ma alcuni punti saltano fuori subito dopo aver letto quei documenti:
- usa XML tipizzato quando possibile (aggiungi uno schema)
- utilizza un indice XML appropriato per l'elaborazione di cui hai bisogno
- prova a distruggere tutto l'XML in un'unica trasformazione invece di 3 passaggi consecutivi
E infine, se hai bisogno di distruggere ogni volta che si interroga, forse è necessario analizzare il modello di dati (è qui che il primo articolo della mia lista è utile).