iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql有没有索引
  • 168
分享到

mysql有没有索引

mysql 2022-11-30 23:11:00 168人浏览 安东尼
摘要

本篇内容主要讲解“Mysql有没有索引”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql有没有索引”吧! mysql有索引。M

本篇内容主要讲解“Mysql有没有索引”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习mysql有没有索引”吧!

mysql有索引。MySQL中通常有两种方式访问数据库表的行数据:1、顺序访问,即在表中实行全表扫描,从头到尾逐行遍历,直到在无序的行数据中找到符合条件的目标数据;2、索引访问,就是通过遍历索引来直接访问表中记录行的方式。MySQL索引的数据结构可以分为BTree和Hash两种,BTree又可分为BTree和B+Tree。

MySQL 索引 是什么?

索引是一种特殊的数据库结构,由数据表中的一列或多列组合而成,可以用来快速查询数据表中有某一特定值的记录。本节将详细讲解索引的含义、作用和优缺点。

通过索引,查询数据时不用读完记录的所有信息,而只是查询索引列。否则,数据库系统将读取每条记录的所有信息进行匹配。

可以把索引比作新华字典的音序表。例如,要查“库”字,如果不使用音序,就需要从字典的 400 页中逐页来找。但是,如果提取拼音出来,构成音序表,就只需要从 10 多页的音序表中直接查找。这样就可以大大节省时间。

因此,使用索引可以很大程度上提高数据库的查询速度,还有效的提高了数据库系统的性能。

为什么要使用索引

索引就是根据表中的一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表,实质上是一张描述索引列的列值与原表中记录行之间一 一对应关系的有序表。

索引是 MySQL 中十分重要的数据库对象,是数据库性能调优技术的基础,常用于实现数据的快速检索。

在 MySQL 中,通常有以下两种方式访问数据库表的行数据:

1) 顺序访问

顺序访问是在表中实行全表扫描,从头到尾逐行遍历,直到在无序的行数据中找到符合条件的目标数据。

顺序访问实现比较简单,但是当表中有大量数据的时候,效率非常低下。例如,在几千万条数据中查找少量的数据时,使用顺序访问方式将会遍历所有的数据,花费大量的时间,显然会影响数据库的处理性能。

2) 索引访问

索引访问是通过遍历索引来直接访问表中记录行的方式。

使用这种方式的前提是对表建立一个索引,在列上创建了索引之后,查找数据时可以直接根据该列上的索引找到对应记录行的位置,从而快捷地查找到数据。索引存储了指定列数据值的指针,根据指定的排序顺序对这些指针排序。

例如,在学生基本信息表 tb_students 中,如果基于 student_id 建立了索引,系统就建立了一张索引列到实际记录的映射表。当用户需要查找 student_id 为 12022 的数据的时候,系统先在 student_id 索引上找到该记录,然后通过映射表直接找到数据行,并且返回该行数据。因为扫描索引的速度一般远远大于扫描实际数据行的速度,所以采用索引的方式可以大大提高数据库的工作效率。

简而言之,不使用索引,MySQL 就必须从第一条记录开始读完整个表,直到找出相关的行。表越大,查询数据所花费的时间就越多。如果表中查询的列有一个索引,MySQL 就能快速到达一个位置去搜索数据文件,而不必查看所有数据,这样将会节省很大一部分时间。

MYSQL 索引 的分类

1、普通索引 和 唯一索引

  • 普通索引:MySQL 中的基本索引类型,允许在定义索引的列中插入 重复值 和 空值

  • 唯一索引:要求索引列的值必须 唯一,但允许 有空值

    • 如果是组合索引,则列值的组合必须 唯一

    • 主键索引是一种特殊的唯一索引,不允许 有空值

2、单列索引 和 组合索引

  • 单列索引:一个索引只包含单个列,一个表可以有多个单列索引

  • 组合索引:在表的 多个字段 组合上 创建的 索引

    • 只有在查询条件中使用了这些字段的 左边字段 时,索引才会被使用(最左前缀原则)

3、全文索引

  • 全文索引 的类型为 fulltext

  • 在定义索引的 列上 支持值的全文查找,允许在这些索引列中插入 重复值 和 空值

  • 全文索引 可以在 char、varchar 和 text 类型的 列 上创建

4、空间索引

  • 空间索引 是对 空间数据类型 的字段 建立的索引

  • MySQL中的空间数据类型有4种,分别是 Geometry、Point、Linestring 和 PolyGon

  • MySQL 使用 Spatial 关键字进行扩展,使得能够用创建正规索引类似的语法创建空间索引

  • 创建空间索引的列,不允许为空值,且只能在 MyISAM 的表中创建。

5、前缀索引

  • 在 char、varchar 和 text 类型的 列 上创建索引时,可以指定索引 列的长度

MySQL 索引 的数据结构

 MySQL 索引 的数据结构可以分为 BTree 和 Hash 两种,BTree 又可分为 BTree 和 B+Tree。

Hash:使用 Hash 表存储数据,Key 存储索引列,Value 存储行记录或行磁盘地址。

 Hash 只支持等值查询(“=”,“IN”,“<=>”),不支持任何范围查询(原因在于 Hash 的每个键之间没有任何的联系),Hash 的查询效率很高,时间复杂度为 O(1)。

BTree:属于多叉树,又名多路平衡查找树。

性质:

  • BTree 的节点存储多个元素( 键值 - 数据 / 子节点 的地址)

  • BTree 节点的键值按 非降序 排列

  • BTree 所有叶子节点都位于同一层(具有相同的深度)

mysql有没有索引

查询过程,例如:Select * from table where id = 6;

mysql有没有索引

BTree 的不足:

  • 不支持范围查询的快速查找(每次查询都得从根节点重新进行遍历)

  • 节点都存储数据会导致磁盘数据存储比较分散,查询效率有所降低

B+Tree:在 BTree 的基本上,对 BTree 进行了优化:只有叶子节点才会存储 键值 - 数据,非叶子节点只存储 键值 和 子节点 的地址;叶子节点之间使用双向指针进行连接,形成一个双向有序链表

mysql有没有索引

等值查询,例如:Select * from table where id = 8;

mysql有没有索引

范围查询,例如:Select * from table where id between 8 and 22;

mysql有没有索引

B+Tree 的优点:

  • 保证了等值查询和范围查询的快速查找

  • 单一节点存储更多的元素,减少了查询的 io 次数

到此,相信大家对“mysql有没有索引”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: mysql有没有索引

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

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

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

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

下载Word文档
猜你喜欢
  • mysql有没有索引
    本篇内容主要讲解“mysql有没有索引”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql有没有索引”吧! mysql有索引。M...
    99+
    2022-11-30
    mysql
  • mysql有没有联合索引
    本篇内容主要讲解“mysql有没有联合索引”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql有没有联合索引”吧! mysql中...
    99+
    2024-04-02
  • mysql如何看索引有没有生效
    可以通过执行EXPLAIN语句来查看MySQL查询是否使用了索引。具体步骤如下: 在MySQL客户端中执行以下SQL语句,替换其中...
    99+
    2024-04-09
    mysql
  • mysql查看有没有索引的方法
    这篇文章主要介绍了mysql查看有没有索引的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql中,可以使用SQL的“SHOW INDE...
    99+
    2024-04-02
  • php索引数组有没有键值
    本文小编为大家详细介绍“php索引数组有没有键值”,内容详细,步骤清晰,细节处理妥当,希望这篇“php索引数组有没有键值”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。php索引数组有键值。在php中,无论是索引数...
    99+
    2023-06-30
  • oracle如何看sql有没有走索引
    在Oracle中,可以通过以下几种方式来查看SQL是否使用了索引:1. 使用SQL Trace:通过启用SQL Trace,可以跟踪...
    99+
    2023-09-13
    oracle sql
  • 如何查看sql有没有走索引
    可以通过以下几种方式来查看SQL是否走了索引:1. 使用EXPLAIN关键字:在执行SQL语句前加上EXPLAIN关键字,如EXPL...
    99+
    2023-09-14
    sql
  • 有没有 PHP 打包索引 shell 的教程?
    随着互联网的不断发展,PHP作为一种流行的后端编程语言,受到了越来越多的关注和使用。PHP可以帮助开发者快速构建Web应用程序,但有时候我们需要将代码打包成一个可执行的shell文件。那么,有没有PHP打包索引shell的教程呢?本文将为您...
    99+
    2023-08-21
    打包 索引 shell
  • MySQL索引有什么用
    这篇文章将为大家详细讲解有关MySQL索引有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高M...
    99+
    2024-04-02
  • MySQL索引有哪些作用
    这篇文章给大家分享的是有关MySQL索引有哪些作用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、索引简介(1)索引的含义和特定 (2)索引的分类 (3)索引的设计原则二、创建...
    99+
    2024-04-02
  • MySQL索引有哪些法则
    这篇文章给大家介绍MySQL索引有哪些法则,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、最佳左前缀法则1. 定义在创建了多列索引的情况下,查询从索引的最左前列开始且不能跳过索引中的...
    99+
    2024-04-02
  • MySQL索引机制有哪些
    本篇内容主要讲解“MySQL索引机制有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL索引机制有哪些”吧!一、索引是什么MySQL官方对索引的定义为...
    99+
    2024-04-02
  • mysql索引类型有哪些
    这篇“mysql索引类型有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mysql索引...
    99+
    2024-04-02
  • mysql的索引有哪几种
    mysql中的索引类型 MySQL中提供了多种索引,每种索引都适用于不同的数据类型和访问模式。以下是MySQL中常见的索引类型: 一、B-Tree索引 最常用的索引类型,用于快速查找数...
    99+
    2024-04-22
    mysql
  • MySQL索引知识有哪些
    这篇文章主要介绍“MySQL索引知识有哪些”,在日常操作中,相信很多人在MySQL索引知识有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL索引知识有哪些”的疑惑...
    99+
    2024-04-02
  • mysql中的索引有哪些
    mysql中的索引通过在表中创建数据结构来优化数据检索,提高查询性能。主要索引类型有:b-tree索引:平衡树形结构,适合范围查询。hash索引:哈希表存储,快速查找特定值。fullte...
    99+
    2024-04-22
    mysql 地理位置
  • mysql索引类型有哪些?
    在Mysql数据库当中,我们经常会谈到Sql语句,当然也会谈到索引优化,那么在数据库当中有哪些索引类型呢,博主在这里进行分享,希望对大家能有所帮助。 目录 1、B-Tree索引: 2、Hash索引: 3、Full-text索引: 4、...
    99+
    2023-09-07
    数据库
  • mysql索引有哪些优点
    本文小编为大家详细介绍“mysql索引有哪些优点”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql索引有哪些优点”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 ...
    99+
    2024-04-02
  • mysql中索引有什么用
    今天就跟大家聊聊有关mysql中索引有什么用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、概念MySQL定义是指数(Index)是帮助MySQL有效地获取数据的数据结构。MySQ...
    99+
    2023-06-15
  • 有没有Python库可以帮助我同步shell索引?
    Python作为一种流行的编程语言,在数据科学和机器学习领域有着广泛的应用。同时,Python也经常用于编写Shell脚本来自动化任务。然而,在Shell脚本中使用索引时会遇到一些挑战,这就需要使用Python库来帮助我们同步Shell索引...
    99+
    2023-10-27
    同步 shell 索引
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作