sql >> Database teknologi >  >> RDS >> Mysql

Hvorfor hænger denne MySQL-forespørgsel?

Fordi nogen har låst et af bordene eller en enkelt række. Dette kan for eksempel ske, hvis du har deaktiveret automatisk commit (så du kan rulle dine ændringer tilbage) i en session og glemte at commit der.

Dette dokument kan hjælpe.

[EDIT] Efter du har postet tabeldefinitionerne, kan du se, at typerne af de to joinkolonner er forskellige. Nu er spørgsmålet:Hvilken type vil blive op-/ned-castet, når du kører forespørgslen? I dit tilfælde kan det være bedre at caste typen PAYMENT_TRANSACTION_LOG_ID til varchar , især hvis du har et indeks på TRANSACTION_ID (som du skal oprette til denne forespørgsel).

På den måde, nogle få rækker (eller endda en enkelt) fra tabellen tbl_order_head vil blive valgt, og derefter sker der et hurtigt opslag i tabellen tbl_orders_log . Uden dette vil databasen indlæse alle poster fra log-tabellen og kontrollere hver post for en match i de fundne rækkefølge-headere (plus casting af hvert ID til typen i headeren osv.).



  1. Hibernate 4-annotering - MySQL-konfigurationsfejl:java.sql.SQLEundtagelse:Kan ikke tilføje fremmednøglebegrænsning

  2. VÆLG Fra MySQL-visning med HAVING-klausul returnerer et tomt resultatsæt

  3. Reducer databasekald for at forbedre webstedets ydeevne

  4. SQL Server-forespørgsel timeout afhængigt af Where-klausul