インデックスとは何ですか?データベース インデックスは、追加の書き込みとストレージ スペースを犠牲にして、データベース テーブルでのデータ取得操作の速度を向上させるデータ構造です。簡単に言えば、索引は本の目次に似ており、そこに記録されたページ番号に基づいて必要なコンテンツをすばやく見つけることができます。 ——Wikipedia の一般的な索引は何ですか?
ここでは比較的複雑な組み合わせを例に挙げて、最適化する方法を紹介します。 左端のプレフィックス一致の原則まず、左端のプレフィックス一致の原則が何であるかを知る必要があります。 最左プレフィックス一致原則とは、データ取得に B+Tree ジョイント インデックスを使用する場合、MySQL オプティマイザは述語 (フィルタ条件) を読み取り、範囲クエリまたは不等クエリに遭遇するまでジョイント インデックス フィールドが作成された順序で右方向に一致させます。このフィールドの後のインデックス列は使用されません。このとき、 key_lenの計算方法
テストデータテーブルは次のとおりです。 テーブル `test_table` を作成します ( `id` int(11) NOT NULL AUTO_INCREMENT, `a` int(11) デフォルトはNULLではない、 `b` int(11) デフォルトはNULLではない、 `c` int(11) デフォルトはNULLではない、 主キー (`id`)、 キー `test_table_a_b_c_index` (`a`,`b`,`c`) )ENGINE=InnoDB デフォルト文字セット=utf8; ヒットインデックス: mysql> explain select * from test_table where a = 1 and b = 2 and c = 3; +----+--------------+-------------+------------+-----------+-------------------------+-------------------------+-----------+--------------------+------------+-------------+ | id | select_type | テーブル | パーティション | タイプ | 可能なキー | キー | キー長 | ref | 行 | フィルター済み | 追加 | +----+--------------+-------------+------------+-----------+-------------------------+-------------------------+-----------+--------------------+------------+-------------+ | 1 | SIMPLE | test_table | NULL | ref | test_table_a_b_c_index | test_table_a_b_c_index | 12 | const、const、const | 1 | 100.00 | インデックスを使用 | +----+--------------+-------------+------------+-----------+-------------------------+-------------------------+-----------+--------------------+------------+-------------+ NULL が許可されるかどうか。NULL が許可される場合は、フィールドをマークするために追加のバイトが必要です。異なるデータ型には異なるバイト サイズが必要です。 mysql> ALTER TABLE `test_table` CHANGE `a` `a` INT(11) NULL; mysql> ALTER TABLE `test_table` CHANGE `c` `c` INT(11) NULL; mysql> ALTER TABLE `test_table` CHANGE `b` `b` INT(11) NULL; mysql> explain select * from test_table where a = 1 and b = 2 and c = 3; +----+--------------+-------------+------------+-----------+-------------------------+-------------------------+-----------+--------------------+------------+-------------+ | id | select_type | テーブル | パーティション | タイプ | 可能なキー | キー | キー長 | ref | 行 | フィルター済み | 追加 | +----+--------------+-------------+------------+-----------+-------------------------+-------------------------+-----------+--------------------+------------+-------------+ | 1 | SIMPLE | test_table | NULL | ref | test_table_a_b_c_index | test_table_a_b_c_index | 15 | const、const、const | 1 | 100.00 | インデックスを使用 | +----+--------------+-------------+------------+-----------+-------------------------+-------------------------+-----------+--------------------+------------+-------------+ フィールドが空になることが許可されている場合、 インデックスの最適化これらの基礎知識があれば、実際の SQL に基づいてパフォーマンスを判断できます。 上記のデータ テーブルを例に、3 つのフィールド a、b、c の結合インデックスを作成します。
通常、実行プランを表示するときに、Extra 列が Using index になっている場合は、オプティマイザーがカバーリング インデックスを使用していることを意味します。
インデックス仕様を作成する
上記は、MySQL インデックスの設計と最適化の方法の詳細です。MySQL インデックスの設計と最適化の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: フレックスレイアウトは左のテキストオーバーフローを実現し、右のテキストの適応を省略します
ブラウザの問題かもしれないと思うかもしれませんが、スタイル定義の順序が間違っている可能性が高いです。...
目次マクスウェルについてMaxwellの設定と使用1. Maxwellインストールパッケージをダウン...
この記事では、参考までに、製品拡大鏡を実装するためのJavaScriptの具体的なコードを紹介します...
まず効果を見てみましょう: html <a href="#"> &l...
Linuxファイルを表示する方法ファイルの内容を表示するコマンド: catは最初の行からコンテンツを...
目次序文SSHとは何かssh は何に使用されますか? sshの使い方ssh 再修正要約する序文ssh...
ここでは、HTML ページのサイズを縮小した後に下部にスクロール バーを表示し、スクロール バーをス...
MySQL 外部キー制約の無効化と有効化: MySQL 外部キー制約が有効になっているかどうかは、グ...
出典: www.bamagazine.comウェブページのバナー、ニュースの見出しの周りのスペース、...
MySQLデータベースのインストールに関するメモ、みんなで共有a) MySQL ソースインストールパ...
トランザクションは、複数の SQL ステートメントの原子性、つまり、それらが一緒に完了するか、一緒に...
序文プロジェクトのリリースでは、常に特定の状況に応じたパッケージ化が必要です。Angular CLI...
目次1 違い1.1 スペース占有1.2 表現範囲1.3 タイムゾーン2 テスト3つの選択肢MySQL...
これは本質的に、ビュー インターフェース構造を記述するために使用される共通の js オブジェクトです...
1. 最初の方法は、unhup コマンドを直接使用してプログラムをバックグラウンドで実行することです...