CTE: CTE steht für Common Table Expressions. Es wurde mit SQL Server 2005 eingeführt. Es wird verwendet, um das Ergebnis einer komplexen Unterabfrage auf temporären Datenbanken zu speichern. Ihr Leben ist auf die aktuelle Abfrage beschränkt. Es wird mit WITH-Anweisung definiert. Es wird hauptsächlich für rekursive Aufrufe verwendet.
Beispiel
;with myCTE as
(
select ParentLevel, ParentID, ChildID
from MHA
where ChildID = 1
UNION ALL
select MHA.ParentLevel, MHA.ParentID, MHA.ChildID
from MHA
inner join myCTE on MHA.ParentID = myCTE.ChildID
where MHA.ParentID <> 0
)
(Fehler)
select top (5) * from myCTE
so in obigem Beispiel habe ich CTE Namen wie myCTE erstellen, die nur in obiger Abfrage verwendet werden können (kann ich Verwenden Sie nicht myCTE außerhalb der obigen Abfrage)
TEMP: Es wird auch verwendet, um das Ergebnis der Abfrage auf temporären Basen zu speichern. Aber seine Lebensdauer ist auf die aktuelle Sitzung beschränkt. Es wird mit # definiert. Es unterstützt nicht rekursiv.
Beispiel:
select * into #tempTable from MHA
In obiger Abfrage ich temporäre Tabelle erstellt habe, jetzt kann ich es Temptabelle out Seite dieser Abfrage verwenden, aber mit in der Sitzung. Siehe unten
(kein Fehler)
select top (5) * from #tempTable
Von der DBA-Website [Was ist der Unterschied zwischen einem CTE und einer Temp-Tabelle?] (Http://dba.stackexchange.com/q/13112/ 3690) –
Ich weiß nicht viel über die Leistungsunterschiede, aber CTE's ermöglichen einfache Schleife und Rekursion, temporäre Tabellen sind praktisch, wenn auf eine Abfrage-Ausgabe mehrfach zugegriffen wird und das erneute Ausführen Zeitverschwendung wäre. –
Sie sind verschiedene Dinge, und wirklich ist es Pferde für Kurse. Welche davon am besten ist, hängt von Ihrem genauen Szenario ab. Ihre Frage ist nicht weniger eindeutig als "Was sind die Vorteile der Verwendung von Ansichten anstelle von Tabellen?" – GarethD