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の順。