Mysqlでexplainを実行した結果にkey_lenという列があるのですが、key_lenとはどういう意味なのでしょうか?
key_len: インデックスが使用しているバイト数を示します。この値に基づいてインデックスの使用状況を判断できます。特にインデックスを組み合わせる場合、インデックスのどの部分がインデックスであるかを判断することが非常に重要です。使用済み。
インデックス フィールドに関する追加情報: は、議論のために可変長データ型と固定長データ型に分けることができます。フィールドをインデックスする場合 char、int、datetime などの固定長データ型の場合、空かどうかを示すマークが必要です。このマークは 1 バイトを占めます (null ではないフィールドの場合、この 1 バイトは必須ではありません); 可変長フィールドの場合 varchar などのデータ型には、2 バイトを占める空マークに加えて長さ情報が必要です。
char、varchar、blob、text などの文字セットの場合、キー len の長さも文字セットに関連します。latin1 の 1 文字は 1 バイトを占め、 gbk の 1 文字は 1 バイト、2 バイト、UTF8 の 1 文字は 3 バイトを占めます。
KEY_LEN | 備考 | |
---|---|---|
key_len = 4 1 | int は 4 バイト、NULL は許可されます。1 バイトを追加します | |
key_len=8 | bigint は 8 バイトです | ##user char(30) utf8 |
utf8 の各文字は 3 バイト、NULL が許可され、1 バイト追加 | ##user varchar(30) not null utf8 | |
utf8 各文字は 3 バイト、可変長データ型、2 バイト追加 | ##user varchar(30) utf8 | key_len=30*3 2 1 |
詳細テキスト(10) utf8 | key_len=30*3 2 1 | |
注: key_len は、where での条件付きフィルタリングに使用されるときに選択されるインデックス列のみを示し、順序による順序/グループによる部分は含まれません。選択されたインデックス列。 |
以下は、テーブル構造を説明するための具体的な例です:select ... from tb where c1=? and c2=? order by c1;Example
CREATE TABLE `t4` ( `id` int(11) NOT NULL AUTO_INCREMENT, `a` int(11) NOT NULL DEFAULT '0', `b` int(11) NOT NULL DEFAULT '0', `c` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `index1` (`a`,`b`) ) ENGINE=InnoDB;Explain の実行結果は次のとおりです:
mysql> explain select * from t4 where a =0 and b > 0; +----+-------------+-------+-------+---------------+--------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+-------+---------------+--------+---------+------+------+-------------+ | 1 | SIMPLE | t4 | range | index1 | index1 | 8 | NULL | 1 | Using where | +----+-------------+-------+-------+---------------+--------+---------+------+------+-------------+ mysql> explain select * from t4 where a > 0 and b = 0; +----+-------------+-------+-------+---------------+--------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+-------+---------------+--------+---------+------+------+-------------+ | 1 | SIMPLE | t4 | range | index1 | index1 | 4 | NULL | 1 | Using where | +----+-------------+-------+-------+---------------+--------+---------+------+------+-------------+
以上がmysql Explainのkey_lenの意味とその計算方法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。