テーブル 't_table1' には 3 つのフィールドが含まれています。
`field1` tinyint(1) unsigned default NULL,
`field2` tinyint(1) unsigned default NULL,
`field3` tinyint(1) unsigned NOT NULL default ’0′,
およびインデックス:
KEY `t_table1_index1` (`field1`,`field2`,`field3`),
この SQL1 を実行すると:
EXPLAIN SELECT * FROM table1 AS c WHERE c.field1 = 1 AND c.field2 = 0 AND c.field3 = 0
次にショーです:
Select type: Simple
tyle: All
possible key: t_table1_index1
key: NULL
key_len: NULL
rows: 1042
extra: Using where
この場合、私のインデックスは役に立たないと言っていると思います。
しかし、この SQL2 を実行すると:
EXPLAIN SELECT * FROM table1 AS c WHERE c.field1 = 1 AND c.field2 = 1 AND c.field3 = 1
それが示している:
Select type: Simple
tyle: ref
possible key: t_table1_index1
key: t_table1_index1
key_len: 5
ref: const, const, const
rows: 1
extra: Using where
この場合、それは私のインデックスを使用しました。だから私のために説明してください:
なぜSQL1はインデックスを使用できないのですか?
SQL1 では、インデックスを編集したり、SQL を書き直してより迅速に実行するにはどうすればよいですか?
ありがとう !