遅い MySQL クエリをより速く実行する方法
P粉311089279
P粉311089279 2024-03-31 08:37:39
0
1
513

このクエリを実行すると、「エラー コード 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 を表示します:

リーリー

クエリの説明:

ああああ

P粉311089279
P粉311089279

全員に返信(1)
P粉831310404

MyISAM から InnoDB に変更します。 (これは この クエリにとっては重要ではないかもしれません。)

インデックスの暫定追加:

リーリー

LEFT は不要です:

リーリー

-->

リーリー

この時点では、ネストされた LEFT JOIN を削除し、単一のレベル A、X、Y を単純に結合するのが合理的かもしれません

説明では、これらの単純化の少なくとも一部はオプティマイザによって自動的に計算されることが示唆されています。

A.

シリアル番号 = B.`ボード_sn

「utf8」と「latin1」が表示されます。クエリが異なる文字セット (または照合順序) 間で VARCHAR を結合する場合、他の適切なインデックスは使用されません。これが問題になる場合は、

ALTER .. CONVERT TO .. を使用して latin1 を utf8 に変更することをお勧めします。

「DURATION」と「INTERVAL」という名前の列が

VARCHAR として宣言されていることがわかります。このような列に対して数値処理を行うと、問題が発生する可能性があります。 (「BOARD_SN」のようなものが実際には数字ではないことはわかっています。)

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート