MySQLはkey_lenに計算を説明します

key_lenにインデックスが使用されるバイトの数を示し、この値は、使用されるどのくらいの指標の決定複合インデックスは、非常に重要である場合は特に、使用される指標に応じて決定することができます。
key_lenに計算するには、次のように考慮すべきいくつかのポイントは以下のとおりです。

  • 追加情報インデックスフィールド:インデックスフィールドは、CHAR、INT、日時などの固定長のデータ型である場合、議論固定長と可変長データ型に分けることができ、必要が空フラグは、フラグは、1つのバイトを占めVARCHARなどの可変長データ型のために、タグが空であるかどうかに加えて、また、長さの情報を持っている必要がある2つのバイトを占有する必要があり、(フィールドがヌルではないため、1つのバイトを必要としません)。

  • 、CHAR、VARCHAR、BLOB、テキスト文字セットなど、また、キーのlen関連の文字の長さ、文字LATIN1 1バイトの場合は、GBKの文字は2つのバイトを占有、UTF8文字は三つの言葉を取りますセクション。

要約すると、いくつかの例では、以下になります:

列タイプ key_lenに リマーク
ID int型 key_lenに= 4 + 1 int型は、NULLが許さ4バイト、プラス1バイトであります
IDのBIGINT nullではありません key_lenに= 8 BIGINTは8バイトです
ユーザCHAR(30)UTF8 key_lenに= 30 * 3 + 1 utf8のすべての文字は3バイトで、許可NULL、プラス1バイトであります
ユーザVARCHAR(30)NOT NULL UTF8 key_lenに= 30 * 3 + 2 utf8の3つの文字あたりのバイト数、可変長のデータの種類、プラス2バイト
ユーザVARCHAR(30)UTF8 key_lenに= 30 * 3 + 2 + 1 utf8の3つの文字あたりのバイト数、NULLを許容する、プラス1バイト、可変長データ型、プラス2バイト
詳細テキスト(10)UTF8 key_lenに= 30 * 3 + 2 + 1 TEXT遮断部は、動的な列タイプです。

注:選択されたインデックス列の場合のフィルタ条件のみを示し、列の選択されたインデックスのこの部分によって/グループ順を含まないkey_lenに。
例えば、関節インデックスIDX(C1、C2、C3)があり 、3 列れるINTがNULLでない場合、次のSQL実行計画、key_lenに8の代わりに12の値:

選択... C1 = TBから?そして、C2 =?C1の順。

おすすめ

転載: www.cnblogs.com/longqin/p/11646004.html