Optimierung von XML in TSQL

Ich habe vor kurzem angefangen, mit XML in Tabellenspalten unter Verwendung von TSQL zu arbeiten, und festgestellt, dass es schrecklich langsamer ist als dein durchschnittlicher alltäglicher 3rd-Normal-Form-associative-tables-Query-joining , von meinen Tests mit 1,5 Millionen Zeilen durchgeführt, ich meine es ist 8 mal langsamer als 3rd-Normal-Form-associative-tables-Query-joining . Der Kopf ist, dass mit XML, wenn in einer bestimmten Weise eingerichtet, es verhindert, dass Sie die Einrichtung von zusätzlichen assoziativen Tabellen (in meinen Tests, meine assoziativen Tabellen (Join-Tabellen für viele = viele Beziehungen auf 7,5 Millionen Zeilen in Größe, im Vergleich zu meinem Tisch mit dem XML, das 1,5 Millionen Zeilen in der Größe war, die die gleichen Informationen speicherte). Machen Sie sich keine Gedanken an meine Ranting aber das war nur Tests auf 2 Sätze von Tabellen, die ich durchgeführt habe.

Frage

Seine Art von schwer zu erklären, für mich, wie ich bin nur ein Anfänger-Zwischenstufe mit SQL server. Was sind die besten Praktiken für die Verwendung von Untyped XML in Ihren Spalten, und wie können Sie optimieren die Tabellen mit diesem XML, um mit optimalen Geschwindigkeiten durchzuführen, da ich jetzt mit XPath und XQuery mit SQL Scripts jetzt (was scheint die Ursache zu sein der schweren Geschwindigkeitsverlangsamung nach Ausführungsplänen)?

Es gibt mehrere Dinge, die Sie tun können, um die performance von XML-Feldern zu verbessern

  • Fügen Sie einen primären XML-Index hinzu
  • Sekundärindex hinzufügen
  • Verwenden Sie ein XML-Schema
  • Erstellen Sie ein berechnetes Feld, das data aus dem XML extrahiert

XML-Felder neigen dazu, etwas weniger IO intensiv zu sein, aber viel mehr CPU-intensiv. Prüfen Sie, ob das ein Problem ist