sql >> データベース >  >> RDS >> Mysql

このMySQLクエリがハングするのはなぜですか?

    誰かがテーブルの1つまたは単一の行をロックしたためです。これは、たとえば、セッションで自動コミットを無効にして(変更をロールバックできるように)、そこでコミットするのを忘れた場合に発生する可能性があります。

    このドキュメント 役立つかもしれません。

    [編集]テーブル定義を投稿すると、2つの結合列のタイプが異なることがわかります。ここで問題は、クエリを実行するとどのタイプがアップキャスト/ダウンキャストされるかということです。あなたの場合、PAYMENT_TRANSACTION_LOG_IDのタイプをキャストする方が良いかもしれません varcharへ 、特にTRANSACTION_IDにインデックスがある場合 (このクエリ用に作成する必要があります)。

    そうすれば、テーブルtbl_order_headの数行(または1行)になります。 が選択され、テーブルtbl_orders_logでクイックルックアップが実行されます 。これがないと、データベースはログテーブルからすべてのレコードをロードし、見つかった順序ヘッダーで一致するかどうか各レコードをチェックします(さらに、すべてのIDをヘッダーのタイプにキャストします)。



    1. SQLの内部結合と外部結合の違い

    2. android.database.sqlite.SQLiteCantOpenDatabaseException:不明なエラー(コード14):データベースを開くことができませんでした

    3. AndroidSQLiteデータベースの単体テスト

    4. Javaでのutf8の問題