MySQLのパフォーマンスの最適化戦略

mysqlの

MySQLの最適化は
、大規模なテーブル小さなテーブル駆動原理を問い合わせる関連テーブルに従うことが重要である
条件が機能許可されたクエリを使用するときにそうでないインデックスは失敗します、;
単一テーブルのクエリを使用し、それがインデックスの故障につながる可能性があるため、同じフィールドを使用するかしないようにしよう以下のような:*名=テーブルから選択した 「 携帯電話のOR名前=「コンピュータ」、あなたはUNIONの代替を使用することができます。
のような文が始まる%で許可されていませんが、そうでない場合は、インデックスが失敗します。
原則に従わなければならない複合インデックスは他に右、または左からインデックスは失敗します。例を:FROMテーブルWHERE名= SELECT * 「 ;ジョー・スミス」AND年齢= 18、そして組み合わせ指数は、名前、年齢形でなければならない
10以上ないと判定実際の状況に応じて、インデックスも過言ではない。
各テーブルは主キー、クエリの効率を促進する目的を持っている必要があります。
ポイントは、テーブル、テーブルには、ビジネスフィールドまたは(など)10または百行うテーブル名に応じてサブビットの仮数の目的を達成することができ、
サブライブラリーは、することができビジネスフィールドのビットの仮数や目的に応じて10または百(など)のサブライブラリライブラリ名達成ん。
ハードディスクのパーティションに似た表パーティションを、時間の期間のデータを組み合わせて用いてサブテーブル+パーティションテーブルで使用することができ、クエリをスピードアップする、パーティションを配置することができます。

MySQLはEXPLAINステートメント

MySQLは、SELECT文と接続テーブルに対処するために、インデックスをどのように使用するかを示していEXPLAIN。あなたはより良い指標を選択して、より最適化されたクエリを記述することができます。

使用し、プラスあなたは前のようなSELECT文を、説明することができます:

tb_item FROM WHERE SELECT IN * CIDをEXPLAIN(FROM SELECT ID tb_item_)
ID:SELECTの識別子。これは、SELECTクエリシーケンス番号です

SELECT_TYPE:SELECTタイプは、以下のいずれかであってもよいです

SIMPLE:単純なSELECT(UNIONまたはサブクエリを使用していない)
PRIMARY:最も外側のSELECT
UNION:UNION第二以降のSELECT文の
外側に応じUNION第二以降のSELECT文で、:DEPENDENT UNIONクエリ
UNION結果:UNION結果
サブクエリを:最初のサブクエリSELECT
DEPENDENTサブクエリ:最初のサブクエリSELECTを、クエリの外側に応じて
誘導される:(句サブクエリ)からエクスポートテーブルを選択
テーブル。基準出力ラインテーブル

パーティション:パーティションテーブル

タイプ:接続タイプ。カップリングの様々なタイプの最悪のタイプに最良に注文タイプに応じて、以下に示します

システムテーブル(=システムテーブル)の唯一のライン。これは、const結合型の特殊なケースです。
CONST:最大1つの一致する行のテーブル、クエリの開始時に読み取られます。唯一の行ので、この行の列の値は、残りの部分が一定で最適化するように考えることができます。constのテーブルに迅速、彼らは一度だけ読み込まれるため!
でeq_refは:テーブルの前から列の各組み合わせについては、表から行を読み取ります。これは、const型を除いて、おそらく最良の接続タイプです。
参考文献:上記の表の行の各組み合わせについて、指標値に一致するすべての行がこのテーブルから読み出します。
ref_or_null:REFとして接続タイプが、MySQLは、特にNULL値を含める検索できますラインを追加しました。
index_merge:結合型表示指標組み合わせ最適化方法。
unique_subquery:以下のサブクエリIN REFの代替形のタイプ:(SINGLE_TABLE FROM PRIMARY_KEYを選択IN値 unique_subquery WHERE some_expr)は、インデックス・ルックアップ機能で、完全に、より効率的な、サブクエリを置き換えることができます。
index_subquery:このタイプは、カップリングunique_subqueryと同様です。サブクエリで交換が、唯一の非ユニークインデックスの形でサブクエリのためすることができます(SINGLE_TABLE some_expr SELECT KEY_COLUMNがFROM WHERE)の値
の行を選択するためのインデックスを使用して、範囲のみ指定された行に取得:レンジ。
インデックス:インデックスツリーのみがスキャンされることを除いて、すべて同じタイプのカップリング。インデックスファイルはデータファイルよりも通常小さいので、これは、ALLよりも通常は高速です。
ALL:前の表からの行の組み合わせごとに、全表スキャン。
possible_keys:MySQLは、テーブル内の行を検索するために使用することができますどのインデックスを示しています

キー:ディスプレイキー(インデックス)MySQLが実際に使用することを決断しました。あなたは、インデックスを選択しない場合、キーはNULLです。

key_lenに:MySQLは、キーの長さを使用することを決定し表示します。キーがNULLの場合、長さはNULLです。

REF:列または定数は行を使用して表からキーと一緒に選択されることを示します。

行:MySQLは、クエリの実行を検討しなければならないと考えている行の数を示しています。複数のライン間でのデータの処理すべき行数を乗算することによって推定することができます。

フィルター:それは条件に通して濾過した行の推定数の割合を示したものです。

エクストラ:この列は、MySQLがクエリを解決する方法についての詳細な情報が含まれています

別個:MySQLは複数の行を検索現在の行の組み合わせ停止のためのマッチラインの後に見つかりました。
ない存在:MySQLのLEFTは一致がLEFT行の上記の組み合わせのチェックテーブルに標準ライン、これ以上の行を結合発見された後、最適化を照会することができ、JOIN。
範囲は、各レコード(インデックスマップをチェック :#):MySQLは全く良い指標を使用しなくてもよいが見出さが、テーブルの列の正面から求めた値が既知であれば、インデックス部分を使用することができます。
filesortレコードを使用する:MySQLはソートされた順序で行を取得する方法を見つけるために、追加の1つのパスが必要です。
インデックスの使用:インデックスツリー内の情報のみを使用することから、さらに検索しなくてはテーブルの列情報を取得するための実際の行を読み取ります。
一時的な使用:クエリを解決するために、MySQLは結果を保持するために一時テーブルを作成する必要があります。
ここで使用した:句は、次のテーブルに一致するか、クライアントに送信された行を制限するWHERE。
組合使って、sort_union(...)を使用して交差(...)を使用して、(...を): これらの関数は、型がindex_mergeインデックス・スキャンをマージ結合方法を示しています。
グループごとのインデックスを使用して:グループごとのインデックスを使用して、テーブルがアクセスされる方法に類似するインデックスを使用すると、MySQLは、すべての列GROUP BYまたはDISTINCTクエリを照会するために使用することができる指標ではなく、実際のハード・ディスク・アクセスの追加の検索を発見発現しましたテーブル。

オリジナルリンク大列  https://www.dazhuanlan.com/2019/07/15/mysqlperformanceoptimizationstrategy/

おすすめ

転載: www.cnblogs.com/chinatrump/p/11416187.html