EXPLAIN ANALYZE über mehere Zeilen

Fragen und Probleme rund um die Abfragespache SQL.
Antworten
Ciatronical
Benutzer
Beiträge: 57
Registriert: Sa 21. Aug 2010, 13:10

EXPLAIN ANALYZE über mehere Zeilen

Beitrag von Ciatronical » Di 18. Sep 2018, 00:37

Hey All,
ich möchte testen ob ein Update mit "WITH ... UPDATE" schneller ist als ein Update mit BEGIN UPDATE, UPDATE, .. COMMIT"
Im ersten Fall schreibe ich einfach EXPLAIN ANALYZE WITH ... UPDATE.

Kann ich ein EXPLAIN ANALYZE über mehere Queries durchführen??

Dank und Gruß Ronny

castorp
Erfahrener Benutzer
Beiträge: 1087
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: EXPLAIN ANALYZE über mehere Zeilen

Beitrag von castorp » Di 18. Sep 2018, 07:37

Nein, explain geht immer nur für ein Statement.

Aber durch eine explizite Transaktionen, wird das Statement weder langsamer noch schneller - die Arbeit die getan werden muss ist immer die gleiche.
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

akretschmer
Erfahrener Benutzer
Beiträge: 7538
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: EXPLAIN ANALYZE über mehere Zeilen

Beitrag von akretschmer » Di 18. Sep 2018, 09:15

Meep. Wenn man mehrere einzelne Statements zu einer Transaktion zusammenfaßt wird dies schneller gehen als wenn jedes einzelne Statement jeweils in seiner eigenen Transaktion läuft. Das könnte bei der Antwort von @castorp evtl. falsch rüber kommen.
Eine Bündelung via WITH könnte etwas geringe Planungszeiten haben, man muß aber aufpassen: WITH-Abfragen sind teilweise krasse Performance-Killer. Insbesondere in der Form: with x as (select <sehr große Datenmenge> select from x where ... mit einer starken Where-Condition, wo nur noch wenige Datensätze übrig bleiben. Die Where-Condition SCHLÄGT NICHT auf die WITH-Abfrage durch (was bei einem Subselect passieren würde).
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

castorp
Erfahrener Benutzer
Beiträge: 1087
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: EXPLAIN ANALYZE über mehere Zeilen

Beitrag von castorp » Di 18. Sep 2018, 09:34

Ciatronical erwähnt "ein UPDATE" deswegen bin ich davon ausgegangen, dass es um den Unterschied zwischen:

Code: Alles auswählen

update foo 
   set bar = 42
where ...;
und

Code: Alles auswählen

begin;
update foo 
   set bar = 42
where ...;
commit;
geht.

Wenn natürlich in einer Transaktion mehrere UPDATEs (bzw. DML Statements) zusammengefasst werden, dann ja, dann ist das ziemlich sicher schneller als viele kleine Transaktionen.

Das ändert aber nichts an der Tatsache, dass EXPLAIN immer nur für ein Statement, nicht für mehrere Statements geht.
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

Ciatronical
Benutzer
Beiträge: 57
Registriert: Sa 21. Aug 2010, 13:10

Re: EXPLAIN ANALYZE über mehere Zeilen

Beitrag von Ciatronical » Mi 19. Sep 2018, 05:07

Ok, danke euch.

Antworten