本文介绍了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
结束语
本文有任何错误,或有任何疑问,欢迎留言说明。
网友最新评论