索引的作用:是用于快速定位实际数据位置的一种机制。
索引在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;