栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MySQL索引

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL索引

         1.什么是索引?

2.为什么需要索引?

3.索引的作⽤

4.索引优缺点和使⽤场景

4.1 索引优点

4.2 索引缺点

4.3 不适合使⽤场景

4.4 注意事项

5.索引使⽤

1.什么是索引?

索引是⼀种特殊的⽂件,包含着对数据表⾥所有记录的引⽤指针。可以对表中的⼀列或多列创建 索引,并指定索引的类型,各类索引有各⾃的数据结构实现。(通俗来说就是书的目录,通过这个目录我们可以快速找到相应的内容) 数据库引擎简介: MySQL 数据库有很多引擎,MySQL 和引擎的关系就像汽⻋⼚商和汽⻋⻋型的关系,⼀个⼚商 (MySQL)可以有多种⻋型(多个引擎)。 MySQL 最著名的引擎有两个:InnoDB 和 MyISAM,MyISAM 是 MySQL 5 . 5 之前默认的引擎, MySQL 5 . 5 之后的默认引擎是 InnoDB,它们最⼤的区别是 MyISAM 不⽀持事务,所以有很⼤的数据不完整性⻛险(也就是数据的业务执⾏了⼀半),⽽ InnDB ⽀持事务,但 MyISAM 的性能⽐ InnoDB ⾼。 本文的索引和事务都是基于 InnoDB 引擎的。 ms问题:说一下MySQL的数据库引擎,MySQL常见的引擎都有哪些? 答:MySQL5.5之后默认的数据库引擎InnoDB、MySQL5.5之前默认的引擎MyISAM。         1. 稳定性:InnoDB引擎支持事务(保证数据的稳定性),稳定性比MyISAM好,MyISAM不支持事务。         2. 性能:MyISAM性能比较高,而InnoDB性能不如MyISAM。 可以使⽤以下命令查询当前数据库的引擎:

2.为什么需要索引? 数据库中数据存储在磁盘,磁盘的顺序查询速度是很慢的,所以的顺序查找指的是读取磁盘中的数据⼀ 条⼀条的进⾏查找。 1. 索引就是为了避免顺序查询,提供查询速度的。 2. 使用索引可以将数据库中的关键索引信息存储到内存中,而内存的操作速度远比磁盘快。 查询数据存储的⽬录:show variables like '%dir%';

3.索引的作⽤ 数据库中的表、数据、索引之间的关系,类似于书架上的图书、书籍内容和书籍⽬录的关 系。 索引所起的作⽤类似书籍⽬录,可⽤于快速定位、检索数据。 索引对于提⾼数据库的性能有很⼤的帮助。

4.索引优缺点和使⽤场景

4.1 索引优点         1. 提⾼数据库查询效率。         2. 减少主从复制从库的延迟时间。

4.2 索引缺点

        1. 索引维护成本很⾼,因为它使⽤的 B+ 树,每次新增、删除数据都需要整理树结构。         2. 占⽤更多的存储空间(磁盘和内存):每个索引都对应⼀个 B+ 树。         3. 索引过多会对 MySQL 的优化器造成⼀定的负担。 创建索引需要考虑的因素:         1. 数据量是否足够大,查询速度是否比较慢。         2. 创建索引的列是否是经常使用的查询条件。

4.3 不适合使⽤场景

        1. 读比较低频,而添加和删除比较高频的业务,不适合使用索引,比如日志表(不经常查询,但是添加非常高频,每次添加都需要重新整理索引)

        2. MySQL服务器本身安装的电脑上磁盘空间不足的情况下,就不要创建。

4.4 注意事项

        1. 如果是不常使⽤的列,或经常做插⼊、修改操作的列,不适合加索引,因为添加、删除需要重新整理索引,速度很慢。         2. 索引会占⽤额外的磁盘空间,或磁盘空间不⾜时,不考虑创建索引。         3. 不要在线上环境(不可以在用户使用的时间段创建索引)随意创建索引,创建索引会锁表,线上数量⼤,会导致其他所有接⼝不可⽤,从⽽造成重⼤事故。

5.索引使⽤

5.1 索引分类(ms)

索引的分类有以下⼏种: ●主键索引(聚簇索引):⼀种特殊的唯⼀索引,不允许有空值,⼀般是在建表的时候同时创建主键索引(通过 primary key)。 ●⾮主键索引(⼆级索引):除主键索引之外的其他索引。 ●唯⼀索引:不能重复的索引。 ●普通索引:可以重复也可以为 NULL 的索引。 ●联合索引:使⽤多个字段联合组成的索引。 注意:创建主键约束(PRIMARY KEY)、唯⼀约束(UNIQUE)、外键约束(FOREIGN KEY)时,会⾃动创建对应列的索引。 索引与约束:         1. 创建索引的时候会自动创建约束,并且在创建约束的时候,月会自动创建索引。         2. 索引和约束是不同的业务定义,约束是用来规范数据的正确性,而索引是用来提升数据库的程序性能的。 5 . 2 查看索引
show index from 表名 ;
5 . 2 . 1 创建普通索引
create index 索引名 on 表名 ( 字段名 [ , 字段名 2... ]) ; 给班级表的 name 添加普通索引: create index idx_class_name on class ( name ) ;
5 . 2 . 2 创建唯⼀索引
create unique index 索引名 on 表名 ( 字段名 ) ; 给班级表的 name 添加唯⼀索引: create unique index idx_un_class_name on class ( name ) ;
5 . 2 . 3 添加主键索引
alter table table_name add primary key (column); 给表t1的id添加主键索引: alter table t1 add primary key(id);

 5.3 创建索引

在创建主键 primary key/unique/foreign key 时会⾃动创建索引,⽽对于⾮主键、⾮唯⼀约束、⾮外键 的字段,可以⼿动创建索引。
create table T(   id int primary key,   k int not null ,   name varchar ( 16 ),   index (k) )engine = InnoDB;
5 . 4 删除索引
drop index 索引名 on 表名 ;

注意:

        ●在创建索引的时候会创建对应的约束,而删除索引的时候也会删除对应的约束。

        ● 唯一索引在创建的时候,要确保原先数据符合唯一约束,这样才能成功的创建唯一约束,否则会创建失败。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/760678.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号