跳至主要內容

1.20 索引 🎉

刘春龙...大约 3 分钟数据库mysql

1.20 索引 🎉

索引是对数据库表中的一列或多列值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息。索引是一种特殊的文件,它们包含着对数据表里所有记录的位置信息。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。MySQL 索引的建立对于MySQL 的高效运行是很重要的,索引可以大大提高 MySQL 的检索速度。

索引相当于图书上的目录,可以根据目录上的页码快速找到所需的内容,提高性能(查询速度)。

索引优点:

  • 通过创建唯一性索引,可以保证数据库表中的每一行数据的唯一性;
  • 可以加快数据的检索速度;
  • 可以加速表与表之间的连接;
  • 在使用分组和排序进行检索的时候,可以减少查询中分组和排序的时间;

索引缺点

  • 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加;
  • 索引需要占用物理空间,数据量越大,占用空间越大;
  • 会降低表的增删改的效率,因为每次增删改索引都需要进行动态维护;

什么时候需要创建索引

  • 频繁作为查询条件的字段应该创建索引;
  • 查询中排序的字段创建索引将大大提高排序的速度(索引就是排序加快速查找);
  • 查询中统计或者分组的字段;

什么时候不需要创建索引

  • 频繁更新的字段不适合创建索引,因为每次更新不单单是更新记录,还会更新索引,保存索引文件;
  • where条件里用不到的字段,不创建索引;
  • 表记录太少,不需要创建索引;
  • 经常增删改的表;
  • 数据重复且分布平均的字段,因此为经常查询的和经常排序的字段建立索引。注意某些数据包含大量重复数据,因此他建立索引就没有太大的效果,例如性别字段,只有男女,不适合建立索引;

MySQL中的索引类型

  • 普通索引:

    • 最基本的索引,它没有任何限制。
  • 唯一索引:

    • 索引列的值必须唯一,但允许有空值,如果是组合索引,则列值的组合必须唯一。
  • 主键索引:

    • 特殊的索引,唯一的标识一条记录,不能为空,一般用primary key来约束。
  • 联合索引:

    • 在多个字段上建立索引,能够加速查询到速度。

普通索引 💎

是最基本的索引,它没有任何限制。在创建索引时,可以指定索引长度。length 为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度,如果是 BLOB 和 TEXT 类型,必须指定 length。

创建索引时需要注意

如果指定单列索引长度,length 必须小于这个字段所允许的最大字符个数。

查询索引

SHOW INDEX FROM table_name;

直接创建索引

CREATE INDEX index_name ON table(column(length));

示例:为 emp3 表中的 name 创建一个索引,索引名为 emp3_name_index;

create index emp3_name_index ON emp3(name);

修改表添加索引

ALTER TABLE table_name ADD INDEX index_name (column(length));

示例:修改 emp3 表,为 addrees 列添加索引,索引名为 emp3_address_index;

alter table emp3 add index emp3_address_index(address);

创建表时指定索引列

CREATE TABLE `table` (COLUMN TYPE ,PRIMARY KEY (`id`),INDEX index_name (column(length)));

示例:创建 emp4 表,包含 emp_id,name,address 列, 同时为 name 列创建索引 ,索引名为 emp4_name_index。

create table  emp4(emp_id int primary key auto_increment,name varchar(30),address varchar(50),index emp4_name_index(name));

删除索引

DROP INDEX indexname ON tablename;

示例:删除 mep3 表中索引名为 emp3_address_index 的索引。

drop index emp3_address_index on emp3;

唯一索引 💎

主键索引 💎

组合索引 💎

上次编辑于:
贡献者: 刘春龙
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7