Aktualisierungsabfrage dauert 75 Sekunden. So reduzieren Sie die Zeit



UPDATE abc.tab1
        SET stl124 = 0
            WHERE stl124 IN (SELECT
                stl124
                FROM abc.tab1
                INNER JOIN
                abc.tab2
                    ON scitp4 = ctid4
                WHERE stl124 = 1 AND ctsp = 0
                AND spi4 = vpid);

Typischerweise ist eine EXISTS Bedingung schneller als eine IN Bedingung. Ausserdem scheint mir die Wiederholung von tab1 im sub-query unnötig.

Leider wird absolut nicht klar welche Spalte zu welcher Tabelle gehört, aber möglicherweise ist das folgende äquivalent und schneller:

UPDATE abc.tab1 t1
  SET stl124 = 0
WHERE EXISTS (SELECT *
             FROM abc.tab2 t2
             WHERE t1.stl124 = t2.stl124           
               AND t2.scitp4 = t1.ctid4
               AND t2.stl124 = 1 
               AND t2.ctsp = 0
               AND tab1.spi4 = t2.vpid);
1 „Gefällt mir“

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.