Frage

Das SO Post einige Details Vorteile in der Leistung in Bezug auf vs. Temporäre Tabellen abgeleitet.

Anders als die Leistung, welche Situationen existieren, für die eine abgeleitete Tabelle nicht angemessen wäre.

Eine Antwort per Post mit einem Beispiel wäre hilfreich.

War es hilfreich?

Lösung

Ich würde es vorziehen, ein Self-Join für eine temporäre Tabelle als eine abgeleitete Tabelle zu tun.

CREATE TEMPORARY TABLE foo AS SELECT ...;

SELECT ... FROM foo f1 JOIN foo f2 ON ...conditions...;

Versus eine abgeleitete Tabelle verwenden, in dem Sie die gesamte Abfrage schreiben zweimal:

SELECT ... 
FROM (SELECT ...)
JOIN (SELECT ...) ON ...conditions...;

Aber eine andere Lösung zu verwenden ist allgemeine Tabellenausdrücke , die von abgeleiteten Tabellen leicht unterschiedlich sind:

WITH foo AS (SELECT ...)
SELECT ... FROM foo f1 JOIN foo f2 ON ...conditions...;

Vorausgesetzt, Sie verwenden eine Marke der Datenbank, dass unterstützt diese Syntax (Microsoft, Oracle, IBM, PostgreSQL).

Andere Tipps

Scope könnte sein. Ich denke, dass temporäre Tabellen können zugänglich für andere Transaktionen / Verfahren hergestellt werden, usw. Abgeleitete Tabellen auf den Block begrenzt sind, in der sie deklariert sind.

Wenn Sie die Daten in der temporären Tabelle zugreifen müssen in mehr Abfragen , es könnte weniger teuer zu vermeiden, dass die Temperaturdaten zu erzeugen immer wieder:

CREATE TEMPORARY TABLE foo AS SELECT ...;

SELECT ... FROM foo WHERE ...conditions...;

-- sometime later

SELECT ... FROM foo WHERE ...different conditions...;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top