≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 数据库 > MySQL

MySQL 各个索引用法示例

人气:331 时间:2021-09-28

这篇文章主要为大家详细介绍了MySQL 各个索引用法示例,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小玲来看看吧!

一. 慢查询日志

 

 

1.1 MySQL的日志类型

 

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

 

 

1.2 认识慢查询日志

 

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

 

 

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

 

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

 

查看是否开启慢查询日志

 

代码如下:



show variables like 'slow%';

MySQL 各个索引的使用分析

 

临时开启慢查询日志

 

代码如下:



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

MySQL 各个索引的使用分析

 

慢查询日志文件所在位置

 

代码如下:



show variables like '%datadir%';

MySQL 各个索引的使用分析

 

二. 查询分析器——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));

MySQL 各个索引的使用分析

创建唯一索引

代码如下:



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

MySQL 各个索引的使用分析

创建复合索引

代码如下:



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

MySQL 各个索引的使用分析

 

删除索引

 

代码如下:



DROP INDEX [indexName] ON tableName;

MySQL 各个索引的使用分析

 

查看索引

 

代码如下:



SHOW INDEX FROM tableName;

MySQL 各个索引的使用分析

 

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';

MySQL 各个索引的使用分析

 

使用索引

:前面都带有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';

MySQL 各个索引的使用分析

 

五. 覆盖索引

 

 

5.1 什么是覆盖索引

 

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

 

关于覆盖索引的几点说明

:

 

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

 

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

 

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

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

本文来自:http://www.q1010.com/177/19702-0.html

注:关于MySQL 各个索引用法示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:

您可能感兴趣的文章

上一篇:阿里云服务器安装MySQL数据库的实现方法
下一篇:MySQL 8.0.22 winx64安装配置示例
热门文章
  • mysql 修改character_set_server为utf-8的简单示例
  • 解决MySQL丢失文件localhost.localdomain.pid、mysql.sock的示例
  • MySQL 数据类型binary和varbinary的简单示例
  • MySQL:reading initial communication packet问题解决方法
  • MySql 表类型MYISAM、InnoDB区别
  • bash: mysql: command not found 的解决方法
  • MYSQL默认用户名ROOT修改方法
  • MySQL 常用命令菜鸟教程
  • MySQL 使用命令行新建用户并授予权限
  • MySql 数据库物理文件存放位置查看示例
  • 最新文章
    • MySQL查看死锁与解除死锁的简单示例
    • MySQL 慢查询的功能实例
    • MySQL查看死锁与去除死锁的简单示例
    • MySQL找出未提交事务的SQL的简单示例
    • MySQL锁阻塞的的简单示例
    • MySQL中的binary类型使用操作的示例
    • SQL优化教程之in与range查询的简单示例
    • MySQL 的 21 个规范、优化最佳实践!
    • MySQL 字符类型大小写敏感的简单示例
    • 解决mybatis-plus分页传入参数后sql where条件没有limit分页信息的问题

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。