Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Warum hängt diese MySQL-Abfrage?

Weil jemand eine der Tabellen oder eine einzelne Zeile gesperrt hat. Dies kann beispielsweise passieren, wenn Sie in einer Sitzung das automatische Festschreiben deaktiviert haben (damit Sie Ihre Änderungen rückgängig machen können) und vergessen, dort festzuschreiben.

Dieses Dokument könnte helfen.

[BEARBEITEN] Nachdem Sie die Tabellendefinitionen gepostet haben, können Sie sehen, dass die Typen der beiden Join-Spalten unterschiedlich sind. Nun stellt sich die Frage:Welcher Typ wird up-/down-casted, wenn Sie die Abfrage ausführen? In Ihrem Fall ist es möglicherweise besser, den Typ PAYMENT_TRANSACTION_LOG_ID umzuwandeln zu varchar , insbesondere wenn Sie einen Index für TRANSACTION_ID haben (die Sie für diese Abfrage erstellen sollten).

Auf diese Weise einige Zeilen (oder sogar eine einzelne) aus der Tabelle tbl_order_head ausgewählt und dann erfolgt eine schnelle Suche in der Tabelle tbl_orders_log . Ohne dies lädt die Datenbank alle Datensätze aus der Protokolltabelle und prüft jeden Datensatz auf eine Übereinstimmung in den gefundenen Auftragskopfzeilen (plus Umwandlung jeder ID in den Typ in der Kopfzeile usw.).