专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

数据库索引怎么用,MySQL数据库索引用法详细介绍

来源:小易整编  作者:小易  发布时间:2023-03-22 07:57
摘要:数据库索引怎么用,MySQL数据库索引用法详细介绍关于MySQL索引,对于研发同学,尤其是后端研发同学,一定不会陌生。我们工作中经常会用到MySQL数据库,就肯定会经常用到性能优化方面的设计和考量,常常用涉及到MySQL索引。但是关于MyS...

数据库索引怎么用,MySQL数据库索引用法详细介绍

数据库索引怎么用,MySQL数据库索引用法详细介绍

关于 MySQL 索引,对于研发同学,尤其是后端研发同学,一定不会陌生。我们工作中经常会用到 MySQL 数据库,就肯定会经常用到性能优化方面的设计和考量,常常用涉及到 MySQL 索引。但是关于 MySQL 索引,你真的用对了么?

接下来,我会通过一个自己工作中真实遇到一个 MySQL 查询应用问题为背景,来逐步剖析分析,见招拆招,以科学理论为依据,分析探究,希望能带大家一起明确索引应用原则,最终将问题探究清楚。

主要原则:问题驱动;

主要流程:应用现象-问题分析-疑点跟进-层层探究-结论明晰。

那接下来,让我们利用约 15min 的时间,让自由的思路飞一会儿吧!

问题介绍

我们存在这样一张数据表(cities),记录了城市 code 和名称一些基本数据。

有一天,我在执行如下 SQL 的时候(一个是指定了字段 id,另一个未指定查询字段,而是利用了 *),发现两种情况下查询执行结果竟然不一样!

Case1:select id from cities limit 1;

查询结果:

id:2

Case2:select * from cities limit 1;

查询结果:

这个问题成功的引起了我的注意,那就继续搞起吧!

问题分析

按照之前的工作经验告诉我,遇事不要慌,先 explain 解释执行看看吧。

Case1:explain select id from cities limit 1;

执行结果:

Case2:explain select * from cities limit 1;

执行结果:

经过上面的执行计划查看,发现 Case1 中的 SQL 应用到了一个名为'uniq_city_code'的索引,而第二个走了全表扫描查询。

问题初步结论:也就是说两个 SQL 由于查询字段的不同,导致 MySQL 在具体执行时候选取了不同的索引策略,从而导致了查询结果的不同。

疑点跟进

其实经过上面的分析,其实还存在几个疑问点:

  • 为什么 Case1 查询中并没有出现 city_code 字段,却会使用其索引?

  • 为什么 Case2 查询就不会使用 uniq_city_code 的索引?

可能细心的同学也发现了,还有就是 Case2 查询计划中 Extra 字段为 Using index,说明满足了索引覆盖(索引中包含了所有满足查询条件的数据,无需从表中查询),可是 uniq_city_code 这个索引中并没有 id 这个字段,为何能以覆盖索引的方式执行?

带着上面的一脸疑问,我们先来一起回顾下 MySQL 引擎索引的实现方式吧。

如图所示,为 Innodb、以及参考对比的 MyISAM 引擎的索引实现图例。

1、InnoDB 聚簇索引和辅助索引(非聚簇索引)的对比图示

数据库索引怎么用,MySQL数据库索引用法详细介绍

同时便于大家理解,我标记黄线、红线分别代表两种引擎方式的数据查询路径,大家可以参照图例,体会对比一下。

InnoDB 按聚簇索引的形式存储数据,所以它的数据布局有着很大的不同。


本文地址:百科问答频道 https://www.neebe.cn/wenda/936639.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


百科问答
小编:小易整编
相关文章相关阅读
  • 微信的搜索引擎功能

    微信的搜索引擎功能

    微信的主要功能是聊天和沟通,如此之外,很多人没有发现,微信还有强大的搜索引擎功能。操作方法01首先打开微信界面02找到微信右上角的搜索符号,一个类似于放大镜的圆...

  • 好搜搜索引擎怎么使用?

    好搜搜索引擎怎么使用?

    1.说起“好搜”可能大家都很陌生,但是实际上这个搜索引擎早就发布了,只是在原来的基础上改名换姓,重新发布,重新起航了,这也是在失败之后的一种应对策略。2.怎么进入好搜呢?我们还是通过习惯的百度搜索引擎进入,输入好搜,搜索结果的第一个...

  • 数据库管理是什么意思?

    数据库管理是什么意思?

    数据库管理是指通过数据库管理系统来管理、访问存储在数据库中的数据的过程。它也和实现电子档案库、图书馆的相关软件的开发有着密切的联系。数据库管理特别强调数据的独立性和可移植性,从而保证数据的可靠性和安全性。数据库管理的主要作用,是把一些内容...

  • 文件索引是什么意思?

    文件索引是什么意思?

    文件索引是一项服务,它的主要作用是帮助用户在计算机文件系统中查找和管理文件。它可以帮助用户快速地跨多个目录、分区或磁盘等多种形式的文件系统中定位所需文件。文件索引通过把每个文件建立索引处理以后,然后把相关信息存储在索引库里面,当用户搜索文...

  • 共享数据库是什么意思?

    共享数据库是什么意思?

    共享数据库是一种常见的开发工作流程,即团队中的所有开发人员都共享某一个数据库的访问权限,都使用该数据库来支持应用程序开发。无需为每个工程师配置基础架构,使安装成本降至最低,因而人们愿意选择它。但由于工程师做出改变的同时不得不承担着影响其他...

  • 搜索引擎排名是什么意思

    搜索引擎排名是什么意思

    搜索引擎排名(SearchEngineRank)是指特定网页在特定查询的结果中保存的位置。根据查询,可能有许多页面的结果,因此搜索排名是指给定网页出现的特定页面以及它在该页面上的位置。搜索引擎排名(SearchEngineRank)...

  • 公用数据库是什么

    公用数据库是什么

    公共数据库是指数据库软件(如Access、SQLServer等)生成的各种包含元器件信息的表格文件。AltiumDesign通过创建和使用关联数据库DBLib文件,可直接从公共数据库调取元器件并通过连接库文件与公共数据库保持同步更新。公共...

  • 关系型数据库的基本原理是什么

    关系型数据库的基本原理是什么

    关系型数据库采用的是关系模型,即把数据组织成一个或多个表格(称为关系),每个表格包含多个列,每行代表一个记录。这种模型的优点是简单易懂,容易维护,便于数据查询和修改。其次是数据结构,关系型数据库采用的是二维表格结构,每个表格有一个主键用于唯...

  • 周排行
  • 月排行
  • 年排行

精彩推荐