本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • MySQL
  • MySQL基础教程(八)MySQL索引的创建与管理

MySQL基础教程(八)MySQL索引的创建与管理

发布:TangLu2019-1-3 12:47分类: MySQL 标签: mysql 数据库 索引

什么是MySQL数据库索引?

索引在MySQL中也叫做键(key),是存储引擎用于快速找到数据的一种结构。索引的作用就像字典的音序表或者书籍的目录一样,当想查询某个数据的时候,根据音序表去查字典比一页一页翻要快无数倍。

通常由开发人员来控制需要在哪些列上建立索引,要创建索引的话一个是在建表的同时就创建好索引,或者是后期通过alter table语句来对已存在的表增加索引。

当然索引也不是越多越好,可以参考以下规则:

1、数据量不多不需要建立索引,比如几千行的数据没有索引必要

2、列中的值不经常变化不需要建立索引

3、经常排序和分组的数据列要建立索引

4、唯一性约束对应使用唯一性索引

5、在导入大量数据时,“先导入数据再为表建立索引”会比“先为表建立索引再导入数据”快许多,因为一个表已经建立过索引的话,每新增加一行数据都会导致重写索引,增加了额外操作


一、查询索引

要查询一张表有哪些索引以及每个索引对应的字段,可以使用以下命令:

mysql > show index from table_name;



二、创建索引

1、在创建MySQL表的同时创建好索引,索引分为INDEX普通索引(最常用)、UNIQUE INDEX唯一索引(值不能重复)、FULLTEXT INDEX全文索引、组合索引

create table table1 (id int , name varchar(10) , age int , index idx_name ( name(10) ) ); #创建table1这张表时给name列建立普通索引,长度为10,名为name_index 
create table table2 (id int , name varchar(10) , age int , unique index id_index (id) ); #给ID列创建一个名为id_index的唯一索引 
create table table3 (id int , name varchar(10) , age int , index zuhe_index (id,name,age) );  #组合索引遵循从左匹配原则,必须要带有最左边ID列的查询才会使用到索引


展示下组合索引的最左匹配使用效果:

explain select name,age from table3 where id<3 \G 
explain select name,age from table3 where id<3 and age <50 \G 
explain select name,age from table3 where  age <50 \G  #possible_keys是null,说明没有匹配到索引 


2、对已有表创建、修改和删除索引(对大小为8G的表建立索引花费时间1分钟左右):

alter table table1 add index index_name(name);  #为name字段建立索引,索引名为index_name 
alter table table1 drop index index_name; 


温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《MySQL基础教程(八)MySQL索引的创建与管理
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-294.html  [生成短网址]

已有 0/1915 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~