A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yonghuming 初级黑马   /  2017-11-29 16:37  /  1448 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


1、什么是索引
索引是一种,利用数据的某个特征(属性),快速定位该数据位置的技术。
利用关键字建立与记录位置的对应关系,就是索引
该关键字是记录的部分数据,可以是某个字段,某些字段,某个字段的一部分。
索引在mysql中,是独立于数据的一种特殊的数据结构。
索引一定有顺序(排好序的快速查找结构),记录则不一定。
2、索引的类型
主键索引,唯一索引,普通索引,全文索引。
无论任何类型,都是通过建立关键字与位置的对应的关系来实现的。
以上类型的差异,是对关键字的要求不同。
关键字:记录的部分数据(某个字段,某些字段,某个字段的一部分)
普通索引:对关键字没有要求
唯一索引:要求关键字不能重复,同时增加唯一约束。
主键索引:要求关键字不能重复,也不能为NULL,同时增加主键约束。
全文索引:关键词的来源不是所有字段的数据,而是从关键词中提取的特殊的关键词。
3、索引管理1)创建索引:
建表时
create table user(
       idint primary key auto_increment,
       namevarchar(32) not null comment ‘姓名’,
       age  tinyint not null comment ‘年龄’,
       emailvarchar(32) not null comment ‘邮箱’,
       intro  varchar(256) not null comment ‘个人介绍’,
       index(name) comment ‘普通索引’,
       uniquekey (email) comment ‘唯一索引’,
     fulltext index (intro) comment ‘全文索引’,
       index(name,age) comment ‘联合索引’
)engine myisam charset utf8;
注意:如果表中存在数据,数据符合唯一或主键约束才能创建成功。
第二点:auto_increment属性,依赖于一个KEY(主键或唯一)
注意:索引可以起名字,但是主索引不能起名字,因为一个表仅仅可以有一个主键索引,其他索引可以出现多个。名字可以省略,mysql会默认生成,通常使用字段名来充当。
2)索引删除
修改表结构时完成:
删除主键索引:alter table  table_name drop primary key
主键索引的删除,如果没有auto_increment 属性则使用 alter table  表名 drop primary key
如果在删除主键索引时,该字段中有auto_increment则先去掉该属性再删除。
删除其他类型索引:alter table 表名  drop index 索引名字
3)索引查看
show indexes from table_name;
show index from table_name
show create tabletable_name
show keys from table_name
desc table_name
4、创建索引的注意事项
(1)较频繁的作为查询条件字段应该创建索引
       select* from emp where empno = 1
(2)唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件
       select* from emp where sex = '男‘   
(3)更新非常频繁的字段不适合创建索引
       select* from emp where logincount = 1
(4)不会出现在WHERE子句中字段不该创建索
5、执行计划
主要用于分析sql语句的执行情况(并不执行sql语句)得到sql语句是否使用了索引,使用了哪些索引
语法:explain sql语句\G   或 desc sql语句\G
在mysql之前的版本中,explain只支持select语句,但是在最新的5.6版本中,它支持 explain update/delete了。
好了,关于mysql索引方面就先介绍这么多了!对这方面有兴趣的朋友可以在此留言!

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马