Wir haben eine Tabelle, die nur über 62k Zeilen hat. Wir führen eine sehr einfache Löschabfrage auf sie, die 45 Minuten dauert abzuschließen:Postgres langsam laufende Abfrage löschen
DELETE FROM myTable WHERE createdtime < '2017-03-07 05:00:00.000'
Dinge, die wir versucht haben:
1- einen Index für Timestamp-Spalte hinzugefügt, die nicht geholfen haben.
2- Entfernen Sie die Zeilen in Chargen von 20 oder 50 mit einer Funktion, die immer noch sehr langsam war.
3- Dropped alle Fremdschlüssel-Constraints Referenzierung dieser Tabelle und eine eigene Primärschlüsselbedingung, die Hilfe tat und die Zeit auf wenige Sekunden reduziert, aber wir können diese auf unserer Produktionsdatenbank nicht sicher tun, wie es die verriegelt Tabellen und verhindern Lese- und Schreibvorgänge, während die Transaktion ausgeführt wird.
Ich weigere mich zu glauben, dass es normal ist, dass diese Abfrage so lange dauert. Irgendwelche Vorschläge werden geschätzt.
'Dropped alle Fremdschlüssel-Constraints Referenzierung diese table' diese FK die Sie haben Indizes sie zu unterstützen (auf der * andere * Tabelle)? – joop
Was er gesagt hat. Offensichtlich wird die Zeit damit verbracht, die FK-Bedingungen nachzuschlagen. – paqash
Leistungsfragen sollten EXPLAIN ANALYSE und einige Informationen über Tabellengröße, Index, aktuelle Zeitleistung, Wunschzeit usw. enthalten. Langsam ist ein relativer Begriff und wir brauchen einen echten Vergleichswert. MySQL Bitte lesen Sie auch [How-to-Ask] (http://stackoverflow.com/help/how-to-ask) – e4c5