common-table-expression

___ tag123sql ___ Structured Query Language (SQL) ist eine Sprache für die Abfrage von Datenbanken. Fragen sollten Codebeispiele, Tabellenstruktur, Beispieldaten und ein Tag für die verwendete DBMS-Implementierung (z. B. MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 usw.) enthalten. Wenn sich Ihre Frage nur auf ein bestimmtes DBMS bezieht (verwendet bestimmte Erweiterungen / Funktionen), verwenden Sie stattdessen das Tag des DBMS. Antworten auf mit SQL gekennzeichnete Fragen sollten den ISO / IEC-Standard SQL verwenden. ___ answer30078770 ___

Möglicherweise keine. Oracle ist zu vielen algebraischen Transformationen in der Lage, bevor die Abfrage tatsächlich optimiert wird. Wahrscheinlich werden beide Abfragen auf die gleiche Weise ausgewertet (sie haben den gleichen Ausführungsplan).

    
___ qstnhdr ___ Unterschied zwischen WITH-Klausel und Unterabfrage? ___ tag123oracle ___ Oracle Database ist ein Datenbankmanagementsystem mit mehreren Modellen, das von Oracle Corporation erstellt wurde. Verwenden Sie dieses Tag NICHT für andere Produkte von Oracle wie Java und MySQL. ___ answer30078783 ___

Die %code% -Klausel gilt auch für Unterabfrage-Factoring bekannt als allgemeine Tabellenausdrücke oder CTEs:

  

Mit der Klausel WITH query_name können Sie einem Unterabfrageblock einen Namen zuweisen. Sie können dann auf den Unterabfrageblock mehrere Stellen in der Abfrage verweisen, indem Sie query_name angeben. Oracle Database optimiert die Abfrage, indem der Abfragename entweder als Inline-Ansicht oder als temporäre Tabelle behandelt wird.

In Ihrem zweiten Beispiel ist das, was Sie %code% genannt haben, eine Inline-Ansicht, keine temporäre Tabelle.

In vielen Fällen hängt die Auswahl, die Sie verwenden müssen, von Ihrem bevorzugten Stil ab, und CTEs können Code besser lesbar machen, insbesondere mit mehreren Ebenen von Unterabfragen (die Meinungen variieren natürlich). Wenn Sie nur auf die CTE / Inline-Ansicht verweisen, werden Sie wahrscheinlich keinen Unterschied in der Leistung feststellen, und der Optimierer kann den gleichen Plan haben.

Sie sind jedoch besonders nützlich, wenn Sie die gleiche Unterabfrage an mehreren Stellen verwenden müssen, z. B. in einer Union. Sie können eine Inline-Ansicht in ein CTE ziehen, so dass der Code nicht wiederholt wird, und der Optimierer kann ihn materialisieren, wenn er dies für vorteilhaft hält.

Zum Beispiel dieses erfundene Beispiel:

%Vor%

könnte umgestaltet werden auf:

%Vor%

Die Unterabfrage muss nicht mehr wiederholt werden. Je komplizierter der wiederholte Code ist, desto vorteilhafter ist es aus Sicht der Wartung, einen CTE zu verwenden. Und je teurer die Unterabfrage ist, desto mehr Leistungsvorteile können Sie durch die Verwendung eines CTE erzielen, obwohl der Optimierer in der Regel ziemlich gut darin ist, herauszufinden, was Sie ohnehin tun.

    
___ qstntxt ___

Was ist der Unterschied zwischen %code% -Klausel und Unterabfrage?

%Vor%     
___ tag123commonableexpression ___ Ein allgemeiner Tabellenausdruck (CTE) ist eine temporäre Ergebnismenge, die innerhalb des Ausführungsbereichs einer einzelnen SELECT-, INSERT-, UPDATE-, DELETE- oder CREATE VIEW-Anweisung definiert ist. ___ tag123subquery ___ "Unterabfrage" ist vage SQL-Terminologie, die verwendet wird, um zu beschreiben, wann mehr als eine SELECT-Anweisung in einer Abfrage oder in DML-Anweisungen (IE: DELETE, UPDATE, INSERT, MERGE) verwendet wird. . Die SELECT-Anweisung der Unterabfrage wird immer in Klammern / Klammern gefunden. ___
2
Antworten

Rekursive Abfrage, die für die transitive Schließung verwendet wird

Ich habe ein einfaches Beispiel zur Veranschaulichung der transitiven Schließung mit rekursiven Abfragen in PostgreSQL erstellt. Allerdings ist etwas mit meiner rekursiven Abfrage nicht möglich. Ich bin mit der Syntax noch nicht vertraut, dah...
07.01.2014, 19:12
2
Antworten

IsNumeric fehlgeschlagen mit "Beim aktuellen Befehl ist ein schwerwiegender Fehler aufgetreten." SQL Server 2014 CTE

Ich führe eine Reihe von Skripten, die eine Datenbank generieren. Sie werden auf SQL Server 2012 (11.0.5058.0) ausgeführt. Auf SQL Server 2014 (12.0.4213.0) ein Skript Fehler mit:    Nachricht 0, Ebene 11, Status 0, Zeile 0   Beim aktuellen...
06.10.2015, 01:07
1
Antwort

Probleme beim Verständnis von zeitweiligen Inkonsistenzen beim Laden von Daten mit SSIS-Paket

Das Problem In den vergangenen Monaten hat das unten beschriebene Verfahren in den meisten Fällen ohne Probleme funktioniert (zu 2008 R2). Wir haben jedoch drei Instanzen von falsch verbundenen Daten. Die Frage ist, was verursacht das und w...
07.03.2013, 15:11
4
Antworten

Wie erstelle ich CTE, das einen anderen CTE als Daten verwendet, um weiter zu begrenzen?

Ich habe diese Frage hier durchsucht, konnte sie aber nicht finden. Bitte leiten Sie mich weiter, wenn wir sie bereits auf der Seite haben. Ich suche nach einer Möglichkeit, CTE zu erstellen, die einen anderen CTE als Daten verwendet, um weit...
10.06.2013, 20:31
2
Antworten

CTE, um alle untergeordneten Elemente (Nachkommen) eines übergeordneten Elements abzurufen

Ich habe dieses Problem, das mir Kopfschmerzen bereitet ... Sagen wir, ich habe eine Tabelle mit einigen tausend Zeilen und die Struktur der Tabelle besteht aus einem Elternteil - & gt; Kind Beziehung. Die Beziehungen können bis zu 6 Ebene...
11.11.2013, 19:40
4
Antworten

Wie funktioniert das Schlüsselwort "Mit" in SQL?

So oft gesehen with und so oft fragt SQL Server das mit ; davor hat Wie funktioniert ;with ... ? %Vor% Warum muss ; davor stehen?     
07.03.2011, 05:29
3
Antworten

SQL - CTE gegen VIEW

Meine Frage hier ist, was der Unterschied zwischen CTE und View in SQL ist. Ich meine, in diesem Fall sollte ich den CTE und den Fall View verwenden. Ich weiß, dass beide eine Art virtuelle Tabellen sind, aber ich kann ihre Verwend...
18.06.2015, 14:45
2
Antworten

Unterschied zwischen WITH-Klausel und Unterabfrage?

Was ist der Unterschied zwischen WITH -Klausel und Unterabfrage? %Vor%     
06.05.2015, 13:38