まず、低速のクエリは何ですか
MySQLのスロークエリ、完全な名前は、MySQLが提供するログです、応答時間は、MySQLでのステートメントを記録するために使用されるしきい値を超えスロークエリログです。特定の環境で、より多くのため実行しているlong_query_time
SQL文の値、それはスロークエリログに記録されます。簡単に言えば、長い時間SQL文の実行されています。
第二に、どのように最適化するために、
1は、状況はインデックス動作しませんでした
最初の文字マッチした文字列は「%」であれば、LIKEキーワードクエリを使用してクエリのキーワードクエリLIKE 1.1を、インデックスが動作しません。唯一の「%」は、第1の位置インデックスに動作しますではありません。
1.2マルチカラムインデックスのクエリMySQLは複数のフィールドにインデックスを作成することができます。インデックスには、最大16個のフィールドを含むことができます。マルチカラムインデックスの場合は、最初のフィールドでこれらのフィールドを使用した唯一のクエリは、インデックスが使用されます。
2は、データベースの構造を最適化
するだけでなく、データベースが少ないディスクスペースを取ることができる合理的なデータベース構造を、より速くクエリを行うことができます。データベース構造の設計は、あなたはデータの冗長性、スピードのクエリを考慮し、合理的かつ他の多くのコンテンツがあり、フィールドのデータ型を更新する必要があります。
2.1複数のテーブルにテーブル番号フィールド
テーブルのフィールドの詳細については、使用頻度が低い一部のフィールドでは、これらのフィールドは、新しいテーブルを形成するために分離することができます。データテーブルが大きい場合ので、用途の低周波数の存在に起因は鈍化しました。
2.2中間テーブルを増やし
テーブルが頻繁にユニオンクエリを必要とするために、クエリのパフォーマンスを向上させるために中間テーブルを作成することができます。テーブルの中央を確立することにより、データを挿入するクエリのパフォーマンスを向上させるために、テーブルの中央に頻繁に関節問い合わせ、次いでテーブルの関節中央にクエリに元のクエリを必要とします。
クエリの分解に関連した3、
複数の小さなクエリに大きなクエリが必要です。
多くの高性能アプリケーションは、リレーショナルクエリに分解するクエリは、単一のテーブルであってもよく、アプリケーションにクエリ結果を関連付ける、多くのシーンが各テーブルに、より効率的であるです。
図4に示すように、内側右/代替左に参加参加参加
内部Bへの参加が、注文が実際に書き込みのない半ダイム順序で実行され、最終的な実装もBに接続することができる:内部のような、2つのテーブルを参加が、順序は死んで固定されていません。インデックス付きフィールド上の条件ならば、インデックスも上使用することができます。自分(クエリオプティマイザ)のためにmysqlの裁判官をしてみましょう。注文やインデックステーブルを使用して、特定の状況に参加し、mysqlのクエリオプティマイザのコスト評価は、それぞれの場合に行われる、実施計画の最良として最終的な選択。
参考ます。https://blog.csdn.net/qq_35571554/article/details/82800463