MySQL索引
1.索引的概念
索引是一个排序的列表,包含索引字段的值和其对应的行记录的数据所在的物理地址
2.索引的作用
加快表的查询速度,还可以对字段排序
3.索引的副作用
会额外占用磁盘空间
更新包含索引的表会花费更多的时间,效率会更慢
4.索引的工作原理
1.没用索引的情况下,要根据条件查询某行数据时,需要先扫描全表,再去定位某行数据
2.有索引后,会先通过查询条件(字段的值),找到其索引对应的行所记录的数据的物理地址,然后根据物理地址访问相应的行的记录的数据
3.就像根据书目录上的页码快速找到所需的内容
5.创建索引的原则依据
1.表中的记录行数较多时,一般超时300行的表建议要有索引
2.建议在表中的主键字段、外键字段、多表连接使用的公共关键字段、唯一性较好的字段、不经常更新的字段、经常出现在(where/group by/order by)子语句的字段或短小的字段上面创建索引
3.不建议在唯一性较差的字段、更新太频繁的字段、大文本字段上面创建索引
6.索引的类型
普通索引
create index 索引名 on 表名 (字段);
alter table 表名 add index 索引名 (字段);
唯一索引
create unique index 索引名 on 表名 (字段);
alter table 表名 add unique 索引名 (字段);
主键索引
alter table 表名 add primary key (字段);
组合索引
create index 索引名 on 表名(字段1,字段2……);
alter table 表名 add index 索引名(字段1,字段2……);
create unique index 索引名 on 表名(字段1,字段2,……);
alter table 表名 add unique 索引名(字段1,字段2,……);
select …… from 表名 where 字段1=xx and 字段2=xx …… ; #用and 做逻辑运算符多字段查询时,要创建组合索引且要满足最左原则
#or做逻辑运算符多字段查询时,所有字段都要单独创建单列索引
全文索引
create fulltext index 索引名 on 表名 (字段);
alter table 表名 add fulltext 索引名(字段);
支持模糊查询 select …… from 表名 where match (字段) against ('单词');
查看索引:
show create table 表名;
show index from 表名;或show keys from 表名;
删除索引:
drop index 索引名 on 表名;
alter table 表名 drop index 索引名;
alter table 表名 drop primary key;
如果遇到select语句查询速度慢,该怎么办?
1.先使用explain分析select语句,看key字段,确定select语句是否使用了索引,或索引使用是否正确
2.再根据 select 语句中 where 子语句 使用的条件字段创建相应的单列索引或者组合索引,组合索引要满足最左原则
面试题
1.先查看cpu等物理硬件
2.mysql配置文件是否做了优化
3.创建相应的索引
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!