インデックスとは何ですか?データベース インデックスは、追加の書き込みとストレージ スペースを犠牲にして、データベース テーブルでのデータ取得操作の速度を向上させるデータ構造です。簡単に言えば、索引は本の目次に似ており、そこに記録されたページ番号に基づいて必要なコンテンツをすばやく見つけることができます。 ——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 の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: フレックスレイアウトは左のテキストオーバーフローを実現し、右のテキストの適応を省略します
CSSの記述順序1. 位置属性(位置、上、右、z-index、表示、フロートなど) 2. サイズ(...
1. テストテーブルを作成する テーブル `mysql_genarate` を作成します ( `id...
目次MySQL 複数インスタンスマルチインスタンスの概要マルチインスタンスとは何ですか?複数のインス...
MySQLの読み書き分離の落とし穴読み取りと書き込みの分離の主な目的は、メイン データベースの負荷を...
この記事の例では、フロントエンドのページング効果を実現するためのJSの具体的なコードを参考までに共有...
サーバー: Ubuntu Server 16.04 LSSクライアント: Ubuntu 16.04 ...
関連する知識ポイント親コンポーネントから子コンポーネントに値を渡す子コンポーネントから親コンポーネン...
目次序文準備行く!文章プロセスを開始するメインループまとめ要約する序文準備皆さんは、こんなことを考え...
注意: この方法は、Webkit ベースのブラウザにのみ適用されます。ブラウザのスクロールバーが広す...
目次ビジネスシナリオ:効果のデモンストレーション:ビジネスシナリオ: el-form を使用する場合...
前の章では、高性能な MySQL に不可欠な、最適化されたデータ型の選択方法とインデックスの効率的な...
Linux: Linux バージョン 3.10.0-123.9.3.el7.x86_64 ngin...
1. はじめにOracle が MySQL 8.0GA をリリースしました。海外での GA はリリー...
この記事では、ユーザーのログイン切り替えを実現するためのVueの具体的なコードを例として紹介します。...
1. MySQLサービスをシャットダウンする# service mysqld stop 2. rpm...