四类索引:①普通索引;②主键索引;③唯一索引;④全文索引

一、添加索引
    (1)添加普通索引       
        添加方法:先创建一个表,然后创建索引
            语法:create index 索引名 on 表名(字段名);
            例子:create table student(name varchar(10) not null,age int unsigned);
                  create index studentIndex on student(name);            
    (2)添加主键索引
        添加方式一:直接在创建表的时候设置主键字段
            例子:create table student(id int unsigned primary key auto_increment,name varchar(10) default '');
        添加方式二:建立表后,修改表的字段,设置字段为主键
            语法:alter table 表名 add primary key [字段的类型] (字段名);
            例子:alter table student
                   add primary key(id);    
        注意:未添加索引前,dbms会从表的第一条数据一直往下找,即使已经找到一条符合要求的数据,dbms也会继续往下查找,因为
              它不能保证下面是否还有符合要求的数据,所以其查找效率为n;
              若添加索引后,dbms会先建立一个索引文件(该文件的位置在MysQL安装主目录\data\temp\下的.MIY文件),然后利用二
              叉树的原理,根据索引把数据制作成二叉树的存储结构模式(索引文件里记录的是数据在存储设备中的物理地址,所以一
              般建立后不要随意修改my.ini里的配置信息,若一旦修改,通常需要重新建立索引),然后通过查找二叉树的方法查找符
              合要求的数据,所以其查找效率为log2(n)。
    (3)添加唯一索引
        添加方式一:创建表时设置标的某字段为唯一索引
            例子:create table student(studentId int unsigned unique,studentName varchar(20) not null);
        添加方式二:创建表后,再指定唯一索引
            语法:create unique index 索引名 on 表名(字段名);
        注意:unique字段可以为NULL,且可有多个重复的NULL,但是具体的内容如''则不能重复;
              主键字段不能为NULL,且不能重复。
    (4)添加文本索引
        说明:全文索引主要针对文本的检索,比如文章
        添加方法:先创建表(一定要指定表的存储引擎为MyISAM),然后添加全文索引
            例子:create table articles(
                id int unsigned auto_increment primary key,title varchar(50),body text
                fulltext(title,body)
                )engine=MyISAM charset utf8;
        全文索引的用法:
            a.错误用法:select * from articles where body like '搜索的文本内容';  【此时不会使用到全文索引】
            b.正确用法:select * from atticles where match(title,body) against('搜索的文本内容');
        验证语句使用的索引类型方法:

            说明:执行“explain 查询语句\G”命令后,查看里面的possible_keys(可能使用到的索引)和key(本

                       语句使用到的索引)的值即可得到使用到的索引类型


            例子:explain select * from atticles where match(title,body) against('搜索的文本内容')\G;

        注意:a.在MySQL中的fulltext索引只针对MyISAM引擎生效,对InnoDB和MEMORY/HEAP存储引擎不生效;

              b.MySQL提供的fulltext只针对英文生效,而sphinx提供的coreseek技术可支持处理中文;

              c.全文索引有一个停止字的概念,可参考MySQL的参考手册的默认全文停止字。


二、查询索引

    方式一:deco 表名;

    方式二:show index from 表名\G;

    方式三:show keys from 表名\G;

三、删除索引

    alter table 表名 drop index 索引名;

    alter table 表名 drop primary key;