关于MySQL索引index杂谈

MySQL建索引命令

create index index_name on tablename(clomun_name.....);

比如建了

CREATE INDEX  O_N_P_D  ON   t_db_netspeed(o,n,p,d)

建好索引之后,使用SELECT 命令进行查询

SELECT COUNT(*) FROM  t_db_netspeed WHERE O=1

这句话也会用到前面建立的索引 O_N_P_D,

首先我们来理解一下索引,多值索引中存放了N个索引值,这N个索引值的排序是按照建立索引的顺利来的,如果前面建立的那个索引,就是先根据o值建立索引然后再是n,p,d,如果o/n/p值都一样,则按照d值来排序。

——“索引对多个值进行排序的一句是CRATE TABLE 语句中定义索引时列的顺序”

所以即便是指查询O值也会用到索引O_N_P_D,即索引值时根据4个列值来建立的,不是非得具备这4个列值

但是这里也有个前提 就是顺序,即索引不能跳过索引顺序,可以看到索引o值时在索引O_N_P_D的第一个索引列

如果查询语句为

SELECT COUNT(*) FROM t_db_netspeed WHERE N=1;

此时就不会用到索引O_N_P_D索引

——“WHERE 配合索引是不分顺序的”

如果查询语句为:

SELECT COUNT(*) FROM t_db_netspeed WHERE n=1 AND o=1 AND p=1 AND d=1;

此语句也会用到索引O_N_P_D;




版权声明:本文为博主原创文章,未经博主允许不得转载。

posted @ 2015-01-04 11:24  mooreliu  阅读(127)  评论(0)    收藏  举报