MySQL ----- 索引

MySQL ------ 索引

一:索引

1、数据库索引

  • 在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据

  • 数据库中的索引是某个表中一列或若干列值得集合,以及物理标识这些值得数据页得逻辑指针清单

2、索引的作用

  • 数据库能够大大加快查询速率
  • 降低数据库的 IO 成本,并且索引还可以降低数据库的排序成本
  • 通过创建唯一性索引保证数据表数据的唯一性
  • 加快表与表之间的连接
  • 在使用分组和排序的时候,可大大减少分组和排序时间

3、索引的分类

  • 普通索引

最基本的索引,而且没有唯一性之类的限制

  • 唯一性索引

与普通索引的区别在于: 索引列的所有制都只能出现一次,必须唯一

  • 主键

是一种唯一性的索引,必须指定为“ primary key ”

  • 全文索引

mysql 从3.23.23版本开始支持全文索引和全文检索,在mysql 中,全文索引的索引类型为 fulltext ,全文索引可以在 varchar 或者 text 类型的列上创建

  • 单列索引与多列索引

索引可以是单列上创建的索引,也可在多列上创建的索引

4、创建索引的原则依据

  • 表的主键、外键必须有索引

  • 数据量超过 300 行的表应该有索引

  • 经常与其他表进行连接的表,在连接字段上应该建立索引

  • 唯一性太差的字段不适合建立索引

  • 更新太频繁的字段不适合创建索引

  • 经常出现在 where 子句中的字段,特别是大表的字段,应该建立索引

  • 索引应该建立在选择性高的字段上

  • 索引应该建立在小字段上,对于大的文本字段甚至超长字段,不要建立索引

二、创建索引的方法

(1)创建普通索引 (tablename:表名称)

create index <索引的名字> on tablename(列的列表);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SufOGrz7-1578385257787)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1578378824140.png)]

(2)创建唯一性索引

create unique index <索引的名字> on tablename(列的列表);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vwnkFQWh-1578385257789)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1578379596356.png)]

(3)创建主键索引

第一种方法:(创建新的表)

create table tablename ([...],primary key(列的列表));

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u8tMPs0l-1578385257790)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1578381446671.png)]

第二种方法:(已有表)

alter table tablename add primary key(列的列表);

在这里插入图片描述

(4)创建全文索引

create fulltext index 索引名称 on 表名(列的列表);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tf5KbIfx-1578385257792)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1578384467692.png)]

(5)创建组合索引

create index 索引名称 on 表名 (列的列表1,列的列表2 ...);

(6)查看索引

show index from tablename;
show keys from tablename;

在这里插入图片描述

发布了62 篇原创文章 · 获赞 11 · 访问量 2349

猜你喜欢

转载自blog.csdn.net/XuMin6/article/details/103876792