このクエリを実行すると、「エラー コード 2013。mysql クエリへの接続が失われました」と表示され続けます:
リーリー実行時間が 30 秒を超える原因とクエリを改善する方法を知りたいです。ご協力をよろしくお願いいたします。
hardware_tracking_msa.HAST_Detail の出力:
リーリーskynet_msa.lots_to_hast_boards の出力:
リーリーskynet_msa.labs_inventory の出力:
リーリー作成したテーブル hardware_tracking_msa.HAST_Detail を表示します:
リーリー作成したテーブル skynet_msa.lots_to_hast_boards を表示します:
リーリー作成したテーブル skynet_msa.labs_inventory を表示します:
リーリークエリの説明:
ああああ
MyISAM から InnoDB に変更します。 (これは この クエリにとっては重要ではないかもしれません。)
インデックスの暫定追加:
リーリーLEFT は不要です:
リーリー-->
リーリーこの時点では、ネストされた LEFT JOIN を削除し、単一のレベル A、X、Y を単純に結合するのが合理的かもしれません 。
説明では、これらの単純化の少なくとも一部はオプティマイザによって自動的に計算されることが示唆されています。シリアル番号
「utf8」と「latin1」が表示されます。クエリが異なる文字セット (または照合順序) 間で VARCHAR を結合する場合、他の適切なインデックスは使用されません。これが問題になる場合は、= B.`ボード_sn
ALTER .. CONVERT TO ..
「DURATION」と「INTERVAL」という名前の列がを使用して latin1 を utf8 に変更することをお勧めします。
VARCHAR
として宣言されていることがわかります。このような列に対して数値処理を行うと、問題が発生する可能性があります。 (「BOARD_SN」のようなものが実際には数字ではないことはわかっています。)