mysql之索引

  索引是数据的目录,能快速定位数据的位置,索引提高了查询速度,但降低了增,删,改的速度,一般在查询频率较高并且重复度较低的列上加。

  索引类型

  index--普通索引

  给已存在的表的列创建索引,create index 索引名称 on 表名称 (列名称(10));

  在建表时声明索引,create table 表名 (id int,name char(20),email char(20),index name(name(10))); name(10)中的10是索引长度,是从左到右的10个字符

  修改索引,alter table 表名 add index name (name(10));

 

  unique index--唯一索引,与普通索引类似,不同的是索引列的值必须是唯一的,但允许有空值

  给已存在的表的列创建索引,create unique index 索引名称 on 表名称 (列名称(10));

  在建表时声明索引,create table 表名 (id int,name char(20),email char(20),unique index name(name(10)));

  修改索引,alter table 表名 add unique index name (name(10));

 

  primary key--主键索引,是一种特殊的唯一索引,不允许有空值,主键索引无需命名,一张表只能有一个主键索引

  在建表时声明索引,create table 表名 (id int,name char(20),email char(20),primary key (name(10)));

  修改索引,alter table 表名 add primary key (name(10));

 

  fulltext index--全文索引,innodb存储引擎不支持全文索引,中文环境下,全文索引无效,要分词+索引,一般用第三方解决方案,如sphinx

  给已存在的表的列创建索引,create fulltext index 索引名称 on 表名称 (列名称(10));

  在建表时声明索引,create table 表名 (id int,name char(20),email char(20),unique fulltext index name(name(10)));

  修改索引,alter table 表名 add fulltext index name (name(10));

 

  多列索引,把2列或多列看出一个整体,然后建索引,使用多列索引,比如where等条件,列名必须是从多列索引最左至右连续的列名左条件才可以,这和单一索引前缀类似。

  调用多列索引,select * from 表名 where name='zhangsan' and city='beijing'; 

  

  冗余索引,在一个列上同时存在多个索引,比如,xm(xing,ming),ming(ming)。

  

  查看索引,show index from 表名,show create table 表名也可以看到。

  删除索引,drop index 索引名 on 表名,或者alter table 表名 drop index 索引名。

posted @ 2015-05-17 21:10  museluo  阅读(137)  评论(0编辑  收藏  举报