Frage

Ich überlege, die Leistung einiger SQL-Anweisungen zu verbessern. Derzeit werden CTEs im Skript mehrfach verwendet und darauf verwiesen.Würde ich stattdessen Verbesserungen durch die Verwendung einer Tabellenvariablen erzielen?(Eine temporäre Tabelle kann nicht verwendet werden, da der Code innerhalb von Funktionen liegt.)

War es hilfreich?

Lösung

Sie werden wirklich zu Performance-Test haben - Es gibt keine Ja / Nein Antwort. Wie pro Andy Living Beitrag oben Links zu, ist ein CTE nur eine Abkürzung für eine Abfrage oder Unterabfrage.

Wenn Sie es zweimal oder mehr in der gleichen Funktion aufrufen, können Sie eine bessere Leistung, wenn Sie eine Tabelle Variable füllen und dann von dem zu wählen / verbinden. als Tabellenvariablen Platz in Anspruch nehmen irgendwo, aber, und haben Indizes / Statistiken nicht (mit Ausnahme eines auf dem Tisch variable Primärschlüssel deklariert) gibt es keine Möglichkeit zu sagen, was schneller ist.

Sie haben sowohl Kosten und Einsparungen, und das ist der beste Weg ist abhängig von den Daten, die sie ziehen in und was sie damit machen. Ich habe in der Situation gewesen, und nach unter verschiedenen Bedingungen für die Geschwindigkeit zu testen -. Einige Funktionen CTEs und andere Tabellenvariablen verwendet

Andere Tipps

Wahrscheinlich nicht. CTE sind besonders gut an Daten für Baumstrukturen abgefragt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top