MySQL の explain コマンドは SQL のパフォーマンスを分析できます。その 1 つが key_len (インデックスの長さ) 統計です。この記事ではMySQLにおけるkey_lenの計算方法を分析し説明します。 1. テストテーブルとデータを作成する テーブル「メンバー」を作成( `id` int(10) 符号なし NOT NULL AUTO_INCREMENT, `name` varchar(20) デフォルト NULL, `age` tinyint(3) unsigned DEFAULT NULL, 主キー (`id`)、 キー `name` (`name`) )ENGINE=InnoDB デフォルト文字セット=utf8; `member` (`id`, `name`, `age`) に VALUES (NULL, 'fdipzone', '18'), (NULL, 'jim', '19'), (NULL, 'tom', '19') を挿入します。 2.説明を見る name フィールドの型はvarchar(20) 、文字エンコーディングはutf8 、1 文字は 3 バイトを占めるため、key_len は20*3=60になります。 mysql> explain select * from `member` where name='fdipzone'; +----+-------------+--------+-------+---------------+-------+-------+------+-----------------------+ | id | select_type | テーブル | タイプ | possible_keys | key | key_len | ref | 行 | 追加 | +----+-------------+--------+-------+---------------+-------+-------+------+-----------------------+ | 1 | SIMPLE | メンバー | ref | 名前 | 名前 | 63 | const | 1 | インデックス条件の使用 | +----+-------------+--------+-------+---------------+-------+-------+------+-----------------------+ explain の key_len は63で、 3多いです。 名前フィールドでは NULL が許可されます。名前を NOT NULL に変更して再度テストしてください。 ALTER TABLE `member` CHANGE `name` `name` VARCHAR(20) NOT NULL; mysql> explain select * from `member` where name='fdipzone'; +----+-------------+--------+-------+---------------+-------+-------+------+-----------------------+ | id | select_type | テーブル | タイプ | possible_keys | key | key_len | ref | 行 | 追加 | +----+-------------+--------+-------+---------------+-------+-------+------+-----------------------+ | 1 | SIMPLE | メンバー | ref | 名前 | 名前 | 62 | const | 1 | インデックス条件の使用 | +----+-------------+--------+-------+---------------+-------+-------+------+-----------------------+ 現在、key_len は 62 です。これは以前より 1 少ないですが、まだ 2 多いです。 NULL フィールドは 1 バイト余分に占有することは間違いありません。 名前フィールドの型は varchar で、可変長フィールドです。varchar をchar に変更して再度テストしてください。 ALTER TABLE `member` CHANGE `name` `name` CHAR(20) NOT NULL; mysql> explain select * from `member` where name='fdipzone'; +----+-------------+--------+-------+---------------+-------+-------+------+-----------------------+ | id | select_type | テーブル | タイプ | possible_keys | key | key_len | ref | 行 | 追加 | +----+-------------+--------+-------+---------------+-------+-------+------+-----------------------+ | 1 | SIMPLE | メンバー | ref | 名前 | 名前 | 60 | const | 1 | インデックス条件の使用 | +----+-------------+--------+-------+---------------+-------+-------+------+-----------------------+ 固定長フィールドに変更した後、key_len は60 になり、予測と一致します。 概要:可変長フィールドを使用する場合は2バイト追加で必要になり、NULL を使用する場合は1バイト追加で必要になります。したがって、インデックス付きフィールドの場合、パフォーマンスを向上させるには、固定長と NOT NULL 定義を使用するのが最適です。 MySQL の key_len の計算方法についての上記の簡単な説明は、編集者が皆さんと共有する内容のすべてです。参考になれば幸いです。また、123WORDPRESS.COM をサポートしていただければ幸いです。 以下もご興味があるかもしれません:
|
>>: js クロージャとガベージ コレクション メカニズムの例の詳細な説明
目次1. 通常の機能2. 矢印関数3. データパケットJSON 4. オブジェクト5. 約束6. 非...
ここで商品テーブルを作成しました。その中のデータを見てみましょう。 mysql> 商品から *...
この記事では、主に、IDEA を MYSQL データベースに接続するための構成時に失敗する問題の解決...
ページをデザインするときには、ログイン ウィンドウを中央に配置するなど、DIV を中央に配置し、ペー...
1.1 iptablesファイアウォールの概要Netfilter/Iptables (以下、Ipta...
1. はじめにスロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメン...
1.ブラウザに次のアドレスを入力します参考: 2. 次のインターフェースに入ります。下の場所をクリッ...
この記事ではJavaScript検索のデータ表示コードを参考までに共有します。具体的な内容は以下のと...
tomcat の containerID を見つけて、tomacat ディレクトリに入ります。 [r...
1. コマンドの紹介watch コマンドは、指定されたコマンドを定期的に実行し、実行結果を全画面に表...
目次1. はじめに2. 利点3. 使用手順1. Vuexをインストールする2. Vuexを参照する3...
1.まず、overflow-wrap属性を理解する CSS のoverflow-wrapプロパティは...
最近、モバイルページを制作する際には、レイアウトにインラインブロック要素がよく使われますが、インライ...
目次1.まず、main.jsページを設定します2. 対応するパスの下で言語パックを構成します。ここに...
MySQL トランザクション サポートは、MySQL サーバー自体にバインドされているのではなく、ス...