Michael Schröpl: temporäre Tabellen

Beitrag lesen

Hi auch,

1 Problem habe ich, wie mache ich das am
sinnvollste die Tabelle wieder zu löschen?
Exra ein DROP TABLE?

Ja, das dürfte am schnellsten sein.

Was muß die Datenbank dabei tun?
a) ein paar Puffer in einer Belegungsliste freigeben
   und
b) die CREATE TABLE-Struktur aus ihrem Inhaltsver-
   zeichnis aller Tabellen streichen
Das geht beides sehr schnell.

Ich bin jetzt nicht _der_ Datenbank Speziallist,
aber warum die Tabelle jedesmal löschen?
Leer sie doch einfach mittels DELETE FROM xyz.

Das ist im allgemeinen Fall _ganz_ schlecht.

Ein DELETE greift auf die einzelnen Datensätze zu
und entfernt einen nach dem anderen - es könnte ja
eine WHERE-Klausel bewirken, daß _nicht_ alle Zeilen
entfernt werden sollen. Das ist schrecklich langsam.
(Oder es könnten parallel andere Prozesse darauf zu-
greifen - dieses Argument scheidet bei temporären
Tabellen allerdings aus.)

Deshalb gibt es in einigen SQL-Dialekten spezielle
Befehle wie TRUNCATE:
http://www.mysql.com/doc/en/TRUNCATE.html
(mit Erklärung über Performance-Aspekte)
"Hau weg" ist viel einfacher als DELETE - und viel
schneller.

ich habe die letzten Threads dazu mitgelesen und
hab das Gefühl das du verdammt viel über SQL
gelernt hast in der doch eigentlich kurzen Zeit.

Dieser Beobachtung schließe ich mich uneingeschränkt an.

Viele Grüße
      Michael