mysql 有几种索引以及如何使用

ixibei 发表于 分类:Mysql 阅读(2482) 评论(0)

简介:

  本文介绍了mysql的五种索引,即普通索引、主键索引、唯一索引、组合索引、全文索引. 创建一个表 create table admin (id int unsigned,name varchar(32) not null,pa…

  本文介绍了mysql的五种索引,即普通索引、主键索引、唯一索引、组合索引、全文索引

. 创建一个表 create table admin (id int unsigned,name varchar(32) not null,pass varchar(32) not null,data text not null)engine=myisam;

.查看索引状态 show columns from admin;

.可以看到现在没有其他索引,可以开工了



1.普通索引

  普通索引是最基本的索引形式,没有什么其他形式,需要注意的是如果是char|varchar 索引长度可以小于实际长度(根据实际需要,即用不到整个字段里的内容),但是如果是text|blob类型则必须指定长度(因为不指定长度则代表整个内容都是索引,造成大量磁盘空间浪费,所以杜绝这种形式)。

 1.添加一个普通索引 alter table `admin` add index pass(`pass`(10));(添加一个名叫pass并且长度为10的索引)



2. 主键索引

     顾名思义,主键索引类似于人的身份证号码,唯一不重复的,该值不能为null,必须存在值,而且一个表只能存在一个主键索引!

    1.加一个主键索引 alter table `admin` add primary key (`id`)(注意是数字1旁边的符号英文符号`);

    2.在查看一下索引状态 show index from admin \G; 现在可以看到id已经被我们添加为主键索引了。



3.唯一索引

  具有普通索引的性质,但是索引值必须唯一,允许有空值(即允许多个值为空);

  1.添加唯一索引 alter table `admin` add unique key (`name`);



4.组合索引

  1.组合索引即是几种索引的组合,具有普通索引的性质。

  2.用时要讲究索引前后排序规则,比如本例中拥有三个字段id,name,pass,假如去掉现在所有的索引情况下,添加组合索引的顺序为id,name,pass 则在使用索引的时候,以下sql会使用到索引

  . select * from admin where id=1 and name=1 and pass=1;

  . select * from admin where id=1 and name=1;

  . select * from admin where id=1 and pass=1;

  . select * from admin where id=1

  即"id,name,pass"   "id,name"   "id,pass"   "id" 这四种组合会使用到改索引,专业名词即为(mysql最左前缀),组合索引需要灵活使用配置

  3.添加组合索引 alter table `admin` add index three_key(`id`,`name`(10),`pass`(10));



5.全文索引

  1.全文索引只可以在myisam类型的表中使用,即innodb类型数据库创建不了(mysql5.6支持了全文索引)。

  2.它可以创建在char|varchar|text字段上。

  3.查找不区分大小写

  4.添加索引 alter table admin add fulltext (`data`);

  5.查询方式有别去其他,需要使用关键字MATCH(col1,col2,…) AGAINST (expr[search_modifier]) select * from admin where match(data) against('love');



6.如何建立索引

 适当的建立索引无疑可以使你的mysql性能质的提高,但是需要灵活的使用,只有在where(<,<=,=,>,>=,BETWEEN,IN,like ‘xxx%’)或者是order 某个字段才会使用,不能盲目的乱加一桶,会造成自盘空间快速膨胀。虽然索引对select会有很大的帮助,但是在insert上回受到影响,因为insert的时候也要改变索引的状态,无疑增加了负担,一切还要结合实际情况出发。


参考链接 

  mysql全文索引

  http://blog.csdn.net/bbirdsky/article/details/45368897 

  mysql索引类型

  http://www.php100.com/html/webkaifa/database/Mysql/2010/0409/4279.html

  如何建立合适的索引

  http://blog.csdn.net/imsuperman1015/article/details/6801926


结束语

本文有任何错误,或有任何疑问,欢迎留言说明。

本站文章除注明转载外,均为原创文章,会经常更新知识点以及修正一些错误,因此转载请保留原出处,方便溯源,避免陈旧错误知识的误导,同时有更好的阅读体验。

http://www.onephper.com/archive/2.html

相关推荐

评论

回复给XXX取消回复

说点什么吧...

网友最新评论

输入关键字