广告
返回顶部
首页 > 资讯 > 数据库 >MySQL 各个索引的使用详解
  • 684
分享到

MySQL 各个索引的使用详解

MySQL索引使用MySQL索引 2022-05-17 10:05:45 684人浏览 泡泡鱼
摘要

一. 慢查询日志 1.1 MySQL的日志类型 日志用于记录数据库的运行情况,以及用户对数据库执行的各类操作。当数据库发生故障时,可以根据日志分析和解决问题,从而对数据库进行恢复。 1.2 认识慢查询日志 慢查询

一. 慢查询日志

1.1 MySQL的日志类型

日志用于记录数据库的运行情况,以及用户对数据库执行的各类操作。当数据库发生故障时,可以根据日志分析解决问题,从而对数据库进行恢复。

在这里插入图片描述

1.2 认识慢查询日志

慢查询日志用于记录Mysql数据库中响应时间超过指定阈值的语句。慢查询日志通常也被称之为慢日志,因为它不仅仅只针对SELECT语句,像INSERT、UPDATE、DELETE等语句,只要响应时间超过所设定阈值都会记录在慢查询日志中。

在这里插入图片描述

1.3 如何开启慢查询日志命令

慢查询日志可以通过命令临时设置,也可以修改配置文件永久设置

查看是否开启慢查询日志


show variables like 'slow%';

临时开启慢查询日志


set slow_query_log='ON';
set long_query_time=1;

慢查询日志文件所在位置


show variables like '%datadir%';

二. 查询分析器——EXPLAIN

 2.1 explain简介

explain命令可以查看sql语句的执行计划。当explain与SQL语句一起使用时,mysql将显示来自优化器的有关语句执行计划的信息。也就是说,MySQL解释了它将如何处理语句,包括有关如何联接表以及以何种顺序联接表的信息。

explain能做什么?

  • 分析出表的读取顺序
  • 数据读取操作的操作类型
  • 哪些索引可以使用
  • 哪些索引被实际使用
  • 表之间的引用
  • 每张表有多少行被优化器查询

 2.2 explain的使用

explain的使用很简单,只需要在SQL语句之前加上explain命令即可,除select语句外,explain也能分析insert、update和delete语句。

命令解释:

在这里插入图片描述

三. 索引的基本使用

3.1 什么是索引

索引是一种特殊的数据结构,类似于图书的目录,它能够极大地提升数据库的查询效率。如果没有索引,在查询数据时必须扫描表中的所有记录才能找出符合条件的记录,这种全表扫描的查询效率非常低

总结:提高查询效率,就好像垃圾分类一样,把一样效果的东西放在一起,找的时候好找。

3.2 常见的索引种类

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定记录。

数据库的索引好比一本书的目录,能够加快数据库的查询速度;索引是快速搜索的关键,如果不加索引,查找任何一条特定的数据都会进行一次全表扫描

在这里插入图片描述

3.3 索引的使用

创建索引

创建普通索引


CREATE INDEX indexName ON tableName(columnName(length));

创建唯一索引


CREATE UNIQUE INDEX indexName ON tableName(columnName(length));

创建复合索引


CREATE INDEX indexName ON tableName(columnName1, columnName2, …);

删除索引


DROP INDEX [indexName] ON tableName;

查看索引


SHOW INDEX FROM tableName;

3.4 索引的实战经验

在这里插入图片描述

四. 复合索引前导列特性

复合索引前导列特性:在MySQL中,如果创建了复合索引(name, salary, dept),就相当于创建了 (name, salary, dept)、(name, salary)和(name) 三个索引,因此在创建复合索引时应该将最常用作查询条件的列放在最左边依次递减

列:

未使用索引


select * from employee where salary=8800;
select * from employee where dept='部门A';
select * from employee where salary=8800 and dept='部门A';

使用索引:前面都带有name


select * from employee where name='liufeng';
select * from employee where name='liufeng' and salary=8800;
select * from employee where name='liufeng' and salary=8800 and dept='部门A';

五. 覆盖索引

5.1 什么是覆盖索引

覆盖索引又称之为索引覆盖,即select的数据列只从索引中就能得到,不必读取数据行,也就是只需扫描索引就可以得到查询结果。

关于覆盖索引的几点说明

  1. 使用覆盖索引,只需要从索引中就能检索到需要的数据,而不要再扫描数据表;
  2. 索引的体量往往要比数据表小很多,因此只读取索引速度会非常快,也会极大减少数据访问量;
  3. MySQL的查询优化器会在执行查询前判断,是否有一个索引可以覆盖所有的查询列;
  4. 并非所有类型的索引都可以作为覆盖索引,覆盖索引必须要存储索引列的值。像哈希索引、空间索引、全
  5. 文索引等并不会真正存储索引列的值。

 5.2 如何判断使用了覆盖索引

当一个查询使用了覆盖索引,在查询分析器EXPLAINExtra列可以看到“Using index”

在这里插入图片描述

到此这篇关于MySQL 各个索引的使用详解的文章就介绍到这了,更多相关MySQL 索引使用内容请搜索自学编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持自学编程网!

本人博客:https://blog.csdn.net/weixin_46654114

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 各个索引的使用详解

本文链接: https://www.lsjlt.com/news/9975.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL 各个索引的使用详解
    一. 慢查询日志 1.1 MySQL的日志类型 日志用于记录数据库的运行情况,以及用户对数据库执行的各类操作。当数据库发生故障时,可以根据日志分析和解决问题,从而对数据库进行恢复。 1.2 认识慢查询日志 慢查询...
    99+
    2022-05-17
    MySQL 索引使用 MySQL 索引
  • MySQL索引类型及各个作用
    本篇文章给大家主要讲的是关于MySQL索引类型及各个作用的内容,感兴趣的话就一起来看看这篇文章吧,相信看完MySQL索引类型及各个作用对大家多少有点参考价值吧。      &n...
    99+
    2022-10-18
  • MySQL基操---各类备份与索引详解
     备份MySQL服务实例运行期间,意外的停电,硬盘损坏,还有一些误操作、服务器宕机等情况。这个时候如何确保数据库能够最大程度地恢复到'正确'的状态呢?对于数据库管理人员来说,防止数...
    99+
    2022-10-18
  • MySQL的索引详解
    一. 索引基础 1.1 简介 在MySQL中,索引(index)也叫做“键(key)”,它是存储引擎用于快速找到记录的一种数据结构。 索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对性能的...
    99+
    2022-10-18
  • mysql之explain使用详解(分析索引)
    explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。 使用方法,在select语句前加上explain就可以了,如: ex...
    99+
    2022-10-18
  • MySQL的InnoDB索引原理详解
      摘要:   本篇介绍下Mysql的InnoDB索引相关知识,从各种树到索引原理到存储的细节。   InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyISAM,文档)。本着高效学习的...
    99+
    2022-05-18
    mysql InnoDB
  • 详解MySQL InnoDB的索引扩展
    索引扩展,InnoDB通过将主键列附加到每个辅助索引中来自动扩展该索引。创建如下表结构: mysql> CREATE TABLE t1 ( -> i1 INT NOT NULL DEFAULT 0...
    99+
    2022-05-13
    MySQL 索引扩展 MySQL InnoDB的索引扩展 MySQL InnoDB
  • MySQL组合索引(多列索引)使用与优化案例详解
    目录1、多列索引2、测试案例及过程2.1 创建一个测试数据库和数据表2.2 添加两个单列索引2.3 查询一条数据利用到两个列的索引2.4 查看执行计划2.5 然后删除以上索引,添加多列索引2.6 再次查询3、多列索引的使...
    99+
    2022-07-04
    mysql组合索引使用 mysql索引
  • MySQL 普通索引和唯一索引的区别详解
    1 概念区分 普通索引和唯一索引 普通索引可重复,唯一索引和主键一样不能重复。 唯一索引可作为数据的一个合法验证手段,例如学生表的身份证号码字段,我们人为规定该字段不得重复,那么就使用唯一索引。(一般...
    99+
    2022-05-25
    MySQL 普通索引 MySQL 唯一索引
  • Mysql索引分类及其使用实例详解
    目录mysql的索引分类单列索引创建单列索引的几种方式:唯一索引创建唯一索引的几种方式:联合索引(复合索引)创建联合索引(复合索引)的方式:Mysql的索引类型INDEX | NORMAL 普通索引UNIQUE 唯一索引...
    99+
    2022-07-19
    Mysql索引分类 Mysql索引使用
  • mysql之explain详解(分析索引最佳使用)
    用法 explain的用法相当简洁,直接在sql语句前加上EXPLAIN 即可 -- 实际SQL,查找租户为测试的用户,并排序 select * from uw_tenant where tenant_name ...
    99+
    2021-08-05
    mysql之explain详解(分析索引最佳使用)
  • MySQL索引与事务定义到使用详解
    目录1.索引的本质2.索引的使用2.1查看索引2.2创建索引2.3删除索引3.索引的数据结构3.1B树3.2B+树4.事务4.1事物的回滚(rollback)4.2事务的四大特性(ACID)4.2.1 原子性4.2.2 ...
    99+
    2022-12-03
    MySQL索引与事务 MySQL事务 MySQL索引
  • MySQL中复合索引和覆盖索引的区别详解
    目录前言准备复合索引覆盖索引总结前言准备 我们先准备一张表和几个字段,方便介绍覆盖索引和复合索引。 创建一个user表,表中有id、name、school、age字段。 字段名字段类型idintnamevarcharsc...
    99+
    2023-11-23
    MySQL 复合索引 MySQL 覆盖索引
  • MySQL中B树索引和B+树索引的区别详解
    目录1. 多路搜索树2. B树-多路平衡搜索树3. B树索引4. B+树索引总结如果用树作为索引的数据结构,每查找一次数据就会从磁盘中读取树的一个节点,也就是一页,而二叉树的每个节点...
    99+
    2022-11-13
  • mysql 索引使用及优化详情
    目录前言mysql索引原理mysql索引分类索引创建语法1、创建索引2、查看索引3、删除索引4、为 username和password创建联合索引5、给user表添加一个info的字段,并为这个字段添加全文索引已经存在的...
    99+
    2022-07-18
    mysql 索引使用优化 mysql 索引优化
  • mysql 索引使用及优化详情
    目录前言mysql索引原理mysql索引分类索引创建语法1、创建索引2、查看索引3、删除索引4、为 username和password创建联合索引5、给user表添加一个info的字...
    99+
    2022-11-13
  • MySQL中的索引优化技巧详解
    MySQL是一个开源的关系型数据库管理系统,被广泛应用于各种网站和应用程序中。索引是MySQL中关键的性能优化手段之一,对于大型数据表来说尤为重要。本文将介绍MySQL中的索引优化技巧,并附加相应的代码示例。一、什么是索引索引是一种特殊的数...
    99+
    2023-10-22
    技巧 优化 索引
  • Mysql InnoDB引擎的索引与存储结构详解
    前言 在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。 而MySql数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根...
    99+
    2022-10-18
  • 详解MySql中InnoDB存储引擎中的各种锁
    目录什么是锁InnoDB存储引擎中的锁锁的算法行锁的3种算法幻像问题锁的问题脏读不可重复读丢失更新死锁什么是锁 现实生活中的锁是为了保护你的私有物品,在数据库中锁是为了解决资源争抢的...
    99+
    2022-11-13
  • mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
    目录聚集索引(Clustered Index)辅助索引(Secondary Index)覆盖索引(Covering index)联合索引《MySQL技术内幕 InnoDB存储引擎》学...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作