一部コピペになるけれど、自分の理解のために書いてみる。
MySQLがあるクエリを実行する際に、テーブルスキャン(=フルスキャン)をするかどうかは、
EXPLAINを使うとわかる。EXPLAINの結果、
+----+-------------+------------+-------+・・・ | id | select_type | table | type |・・・ +----+-------------+------------+-------+・・・ | 1 | SIMPLE | xxxxx | const |・・・ | 1 | SIMPLE | xxxxx | ALL |・・・ | 1 | SIMPLE | xxxxx | ALL |・・・ +----+-------------+------------+-------+・・・のように、type列が"ALL"になっているテーブルは、フルスキャンが実行され、パフォーマンスが劣化する場合がある。 typeがALLになる条件のは、
- テーブルが小さい。
- (INDEXを張っていても)WHERE句でINDEXを使用するに至らない。
- (INDEXを張っていても)WHERE句でINDEXをキーとして除外する行数が小さい。
0 件のコメント:
コメントを投稿