インデックス

最適化インデックス

インデックスとは?

 状態:-  閲覧数:1,195  投稿日:2017-03-28  更新日:2017-03-28  
データ保存する際、「指定したカラムの値」と「そのデータの保存位置情報」を本の索引のような構造で保存しておき、目的のデータを抽出するときにその索引を使って探すことができる仕組み


INDEXを作成しないとどうなるの?


フルテーブルスキャン
・「テーブル内の全データを1件ずつ順番に見ていき、条件に合うデータだけを抽出する」という動作を行う
・この動作のことを「フルテーブルスキャン」と呼ぶ


INDEXを作成すると?


・データテーブルとは別に、検索用に最適化された状態でデータが保存される

INDEXを使用すると?
・目的レコードを迅速に見つけて取得することが可能
・フルテーブルスキャンを行うよりも早くデータを抽出することができる

MySQLでは
・1クエリを実行するとき、1テーブルにつき1インデックスのみ使用可

1テーブルにつき複数インデックス使用している場合は?
・MySQLは、経験に基づく推測により、何れか一つを選択する

マルチカラムインデックス
・1インデックスにつき複数カラムを指定することもできる
・複合インデックス、合成インデックスと呼ぶこともある

InnoDB のインデックス

 閲覧数:299 投稿日:2017-03-28 更新日:2017-03-28 

2種類


クラスタインデックス
・主キーインデックス

セカンダリインデックス
・クラスタインデックス以外のすべてのインデックス


クラスタインデックス Clustered index


全てのInnoDBテーブルで存在する特別なインデックス
・主キーとそれ以外の列値がそのまま保存されている
・そのため、インデックスの値を読めば即、その他の列値も取得できる


セカンダリインデックス Secondary Index


インデックスを検索することで主キーの値が分かる
・その主キーの値を使って、その他の列値の値を知ることが出来る


8.3.1 MySQL のインデックスの使用の仕組み

MySQL インデックス (PRIMARY KEY、UNIQUE、INDEX、および FULLTEXT)

 閲覧数:288 投稿日:2017-03-28 更新日:2017-03-28 

PRIMARY KEY


テーブル上で PRIMARY KEY を定義すると
・InnoDB ではそれがクラスタ化されたインデックスとして使用される



UNIQUE




INDEX




FULLTEXT インデックス


テキストベースのカラム (CHAR、VARCHAR、または TEXT カラム) 上に作成されたインデックスのタイプ

使用すると?
・ストップワードとして定義されている任意の単語が省略されることで、これらのカラム内に含まれるデータ上での InnoDB のクエリーおよび DML 操作の速度を上げる際に役立つ

実装方法
・CREATE TABLE ステートメントの一部として定義することも、あとで ALTER TABLE または CREATE INDEX を使用して追加することもできる


コメント投稿(ログインが必要)