インデックスとは何ですか?データベース インデックスは、追加の書き込みとストレージ スペースを犠牲にして、データベース テーブルでのデータ取得操作の速度を向上させるデータ構造です。簡単に言えば、索引は本の目次に似ており、そこに記録されたページ番号に基づいて必要なコンテンツをすばやく見つけることができます。 ——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 の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: フレックスレイアウトは左のテキストオーバーフローを実現し、右のテキストの適応を省略します
自宅のルーターが300Mの帯域幅を80Mに強制的に減らしたため、3205Uソフトルーターを購入しまし...
序文Node は新しいプログラミング言語ではなく、JavaScript のランタイムに過ぎないとよく...
以前はMySQLをあまり使用していなかったため、MySQLの機能にあまり詳しくありませんでした。この...
最近、会社でたまたま生放送をしていたのですが、今日は私が遭遇した落とし穴を記録します。会社のサーバー...
この記事では、JSオブジェクト指向タイピングゲームの具体的なコードを参考までに紹介します。具体的な内...
目次1. ソフトウェアとシステムイメージ2. 仮想マシンを作成する3. CentOS8をインストール...
ページ上でショートカットキーをカスタマイズする要件に遭遇し、ショートカットキーを設定して表示する場所...
数日前、Google Reader で Yu Bo さんが共有した投稿「空のパスがページのパフォーマ...
この効果は、2つのブラウザが互いにシミュレートしていることを示しています 1. シミュレートされたノ...
1. MySQLのトランザクションの概念MySQL トランザクションは主に、操作量が多く複雑度の高い...
ドラッグ アンド ドロップはフロントエンドでよく使われる機能であり、多くのエフェクトで js のドラ...
実施効果: 1. count(1) と count(*)テーブル内のデータ量が多い場合、テーブルを分...
最近、Linux オペレーティング システムを使用して実行可能ファイルを実行していたところ、「そのよ...
崇高なSublime Text はコード エディター (Sublime Text2 は有料ソフトウェ...
HTMLタグの説明1. HTMLタグタグ: !DOCTYPE説明: HTML ドキュメントが準拠する...