欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Mysql—索引原理与详解

程序员文章站 2022-07-02 22:15:22
索引的原理 索引的优点和缺点和使用原则 优点: 缺点: 使用原则 索引的分类 普通索引:加速查找 唯一索引:加速查找+约束 (唯一) 主键索引:加速查找+约束(不为空且唯一) 外键索引: 组合索引:primary key(id,name):联合主键索引,unique(id,name):联合唯一索引, ......

索引的原理

索引的优点和缺点和使用原则

  • 索引优点:1.可以加快数据的检索速度,查询速度。2.所有的mysql列类型(字段类型)都可以被索引,也就是可以给任意字段建立索引。
  • 索引缺点:1.
  • 使用原则

索引的分类

  • 普通索引:加速查找
  • 唯一索引:加速查找+约束 (唯一)
  • 主键索引:加速查找+约束(不为空且唯一)
  • 外键索引:  
  • 组合索引:primary key(id,name):联合主键索引,unique(id,name):联合唯一索引,index(id,name):联合普通索引
  • 全文索引:用于搜索很长一篇文章的时候,效果最好。(full text)
  • 空间索引:了解就好,几乎不用。(spatial)

普通索引(index)

使用规则
1.一个表中可以有多个index字段
2.字段的值可以有重复,也可以为null值。字段值无约束
3.经常把做查询条件的字段设置为index字段
4.index字段的key标志为:mul

创建普通索引(有三种方法) 方法1:创建表时创建索引index create table student( id int, name varchar(25), score float(5,2), index(name), # 创建name索引 index(score) # 创建score索引 ); 方法2:创建表后创建索引index:索引名一般和字段名一样,只要自己能认出就行,可以随便起名。 mysql> create index 索引名 on 表名(字段名) mysql> create index name on student(name); 方法3:创建表后创建索引index mysql> alter table 表名 add index 索引名(字段名); mysql> alter table student add index(name); mysql> alter table student add index name6(name);
查看普通索引:key一列就是索引的列,我们会发现在name和score有值mul。 mysql> desc 表名; mysql> desc student; # key标志为:mul mysql> show index from 表名; # key_name值为索引名 mysql> show index from student\g; # 如果字段名过多,就添加一个\g。
删除普通索引:删除普通索引只能一个一个删除 mysql> drop index 索引名 on 表名; mysql> drop index name6 on student;

唯一索引(unique)

使用规则
1.一个表中可以有多个unique字段
2.unique字段的值不允许重复,可以为空值null
3.unique的key标志是uni

创建唯一索引(基本等同index创建) 方法1:创建表时创建索引 create table student( id int, name varchar(25), score float(5,2), unique(name), unique(score) ); 方法2:创建表后创建索引:索引名一般和字段名一样,只要自己能认出就行,可以随便起名。 mysql> create unique index 索引名 on 表名(字段名); 方法3:创建表后创建索引 mysql> alter table student add unique(name); mysql> alter table student add unique name6(name); mysql> alter table student add unique index name6(name);
查看唯一索引 mysql> desc 表名; mysql> show index from 表名;
删除唯一索引 mysql> drop index 索引名 on 表名;

主键索引(primary key)

外键索引(foreign key)