Wie kann ich erzwingen, dass eine Unterabfrage sowie eine # temporäre Tabelle ausgeführt werden?

Ich wiederhole die Frage von Mongus PongWarum ist die Verwendung einer temporären Tabelle schneller als eine verschachtelte Abfrage? die hat keine Antwort, die für mich funktioniert.

Die meisten von uns stellen irgendwann fest, dass eine verschachtelte Abfrage, wenn sie eine bestimmte Komplexität erreicht, in temporäre Tabellen unterteilt werden muss, um die Leistung zu erhalten. Es istabsurd dass dies jemals der praktischste Weg sein könnte und bedeutet, dass diese Prozesse nicht mehr in einer Ansicht gemacht werden können. Und oft werden BI-Apps von Drittanbietern nur mit Ansichten gut wiedergegeben, daher ist dies entscheidend.

Ich bin davon überzeugt, dass es eine einfache Abfrageplaneinstellung geben muss, damit die Engine jede Unterabfrage der Reihe nach spoolt und dabei von innen nach außen arbeitet. Keine zweite Vermutung, wie die Unterabfrage selektiver werden kann (was manchmal sehr erfolgreich ist), und keine Möglichkeit korrelierter Unterabfragen. Nur der Datenstapel, den der Programmierer durch den in sich geschlossenen Code in Klammern zurückgeben wollte.

Ich stelle häufig fest, dass der Wechsel von einer Unterabfrage zu einer #Tabelle nur 120 Sekunden bis 5 dauert. Im Grunde genommen macht der Optimierer irgendwo einen großen Fehler. Natürlich kann es sehr zeitaufwändig sein, wie ich das Optimierungsprogramm dazu bringen kann, die Tabellen in der richtigen Reihenfolge zu betrachten, aber selbst dies bietet keine Garantie. Ich frage hier nicht nach der idealen Ausführungszeit von 2 Sekunden, sondern nur nach der Geschwindigkeit, die mir das Temp-Tabling im Rahmen der Flexibilität eines bietetAussicht.

Ich habe noch nie hier geschrieben, aber ich habe jahrelang SQL geschrieben und die Kommentare anderer erfahrener Leute gelesen, die dieses Problem ebenfalls akzeptiert haben, und jetzt möchte ich, dass das entsprechende Genie vortritt und das sagt besonderer Hinweis ist X ...

Antworten auf die Frage(4)

Ihre Antwort auf die Frage