mysql-“ WHERE…IN…”,“ WHERE…!=…”查询索引问题

我正在使用MySQl数据库.

我知道如果我为列创建索引,则使用该列索引可以快速从表中查询数据.但是,我仍然有以下问题:

(假设我有一个名为cars的表,有一个名为country的列,并且已经为country列创建了索引)

>例如,我知道查询SELECT * FROM cars WHERE country =’japan’将使用列country上的索引来查询快速的数据. !=操作怎么样?将选择*从所在国家的汽车上!=’日本’;还使用索引来查询数据?
> WHERE … IN …操作是否使用索引查询数据?例如SELECT * FROM汽车所在的国家(例如“ japan”,“ usa”,“ sweden”);

解决方法:

您可以使用EXPLAIN SELECT来查找查询是否使用索引.

例如:

EXPLAIN SELECT * 
FROM A 
WHERE foo NOT IN (1,4,5,6);

可能的产量:

+----+-------------+-------+------+---------------
| id | select_type | table | type | possible_keys 
+----+-------------+-------+------+---------------
|  1 | SIMPLE      | A     | ALL  | NULL          
+----+-------------+-------+------+---------------

+------+---------+------+------+-------------+
| key  | key_len | ref  | rows | Extra       |
+------+---------+------+------+-------------+
| NULL | NULL    | NULL |    2 | Using where |
+------+---------+------+------+-------------+

在这种情况下,查询没有可能的键,因此不使用键进行查询.这是您感兴趣的关键列.

此处有更多信息:

> http://dev.mysql.com/doc/refman/5.0/en/explain.html
> http://dev.mysql.com/doc/refman/5.0/en/optimization-indexes.html

上一篇:MySQL打破了1024字节索引的限制


下一篇:使用索引满足MySQL条件