MySQL中索引的分类和基本操作

索引的作用:是用于快速定位实际数据位置的一种机制。

索引在mysql中,是独立于数据的一种特殊的数据结构。

一、索引的分类

普通索引:利用特定的关键字,标识数据记录的位置(磁盘上的位置,盘号,柱面,扇面,磁道)。
唯一索引:限制索引的关键字不能重复的索引。
主键索引:限制索引的关键字不能重复,并且不能为NULL。(不能为NULL的唯一索引)。一个表中只允许有一个主索引。
全文索引:索引的关键字,不是某个字段的值,而是字段值中有意义的词来作为关键字建立索引。
复合索引:如果一个索引(以上四种任何都可以),是依赖于多个字段创建的化,称之为复合索引。

一个myisam表的对应的三个文件:表结构文件.frm、数据文件.myd、索引文件.myi

添加一个普通索引后,索引文件会变大

二、索引的创建

第一种方式:在创建表时,一块创建索引。

第二种方式:建完表后,以alter方式建立索引。

创建索引的注意事项:

(1)较频繁的作为查询条件字段应该创建索引

select * from emp where empno = 1

(2)唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件。比如:is_best is_new is_hot is_sale is_delete

select * from emp where sex = ''

(3)更新非常频繁的字段不适合创建索引,比如登录的状态。

select * from emp where logincount = 1

(4)不会出现在WHERE子句中字段不该创建索

三、索引的删除

删除主键索引:alter table tablename drop primary key

在删除主键索引时,要注意是否有auto_increment属性,如果有,则先要删除该属性,才能删除主键索引。

删除其他索引:alter table tablename drop index 索引的名字

注意:如果没有指定索引的名字则是使用该字段名称作为索引的名字的。

四、索引的查看

show indexes from table_name;

show index from table_name;

show create table table_name;

show keys from table_name;

desc table_name;
原文地址:https://www.cnblogs.com/chenjiacheng/p/6522549.html