Mysql
 sql >> Base de données >  >> RDS >> Mysql

Pourquoi cette requête MySQL se bloque-t-elle ?

Parce que quelqu'un a verrouillé l'une des tables ou une seule ligne. Cela peut arriver, par exemple, si vous avez désactivé la validation automatique (afin de pouvoir annuler vos modifications) dans une session et que vous avez oublié de valider cette session.

Ce document pourrait aider.

[EDIT] Après avoir publié les définitions des tables, vous pouvez voir que les types des deux colonnes de jointure sont différents. Maintenant, la question est :quel type sera up-/down-casted lorsque vous exécutez la requête ? Dans votre cas, il serait peut-être préférable de caster le type de PAYMENT_TRANSACTION_LOG_ID en varchar , surtout si vous avez un index sur TRANSACTION_ID (que vous devez créer pour cette requête).

Ainsi, quelques lignes (voire une seule) de la table tbl_order_head sera sélectionné et ensuite, une recherche rapide se produit dans la table tbl_orders_log . Sans cela, la base de données chargera tous les enregistrements de la table de journal et vérifiera chaque enregistrement pour une correspondance dans les en-têtes de commande trouvés (en plus de convertir chaque ID en type dans l'en-tête, etc.).