我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MYSQL5.7 INDEXES之如何使用索引(一)

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MYSQL5.7 INDEXES之如何使用索引(一)

Most MySQL indexes (PRIMARY KEYUNIQUEINDEX, and FULLTEXT) are stored in B-trees. Exceptions: Indexes on spatial data types use R-trees; MEMORY tables also support hash indexes; InnoDB uses inverted lists for FULLTEXT indexes

B-Tree

A tree data structure that is popular for use in database indexes. The structure is kept sorted at all times, enabling fast lookup for exact matches (equals operator) and ranges (for example, greater than, less than, and BETWEEN operators). This type of index is available for most storage engines, such as InnoDB and MyISAM.

Because B-tree nodes can have many children, a B-tree is not the same as a binary tree, which is limited to 2 children per node.

Contrast with hash index, which is only available in the MEMORY storage engine. The MEMORY storage engine can also use B-tree indexes, and you should choose B-tree indexes for MEMORY tables if some queries use range operators.

B树索引:可以在使用表达式中使用的对列的比较 =, >, >=, <, <=,或BETWEEN运营商。LIKE 如果to的参数LIKE是不以通配符开头的常量字符串,则索引也可以用于比较.

哈希索引 :只能用来做相等比较,速度快。

MySQL使用索引进行以下操作:

  • WHERE快速 查找与子句匹配的行

  • 从考虑中消除行。如果可以在多个索引之间进行选择,MySQL通常会使用找到最少行数的索引(最具 选择性的索引)。

  • 如果表具有多列索引,则优化器可以使用索引的任何最左前缀来查找行。举例来说,如果你有一个三列的索引 (col1, col2, col3),你有索引的搜索功能(col1), (col1, col2)以及(col1, col2, col3)有关更多信息,请参见 第8.3.5节“多列索引”

  • 执行联接时从其他表中检索行。如果声明相同的类型和大小,MySQL可以更有效地在列上使用索引。在这种情况下, VARCHAR与 CHAR被认为是相同的,如果它们被声明为相同的大小。例如, VARCHAR(10)和 CHAR(10)是相同的大小,但是 VARCHAR(10)和 CHAR(15)不是。

    对于非二进制字符串列之间的比较,两个列应使用相同的字符集。例如,将一utf8列与一 latin1进行比较会排除使用索引。

    如果无法在不进行转换的情况下直接比较值,则比较不同的列(例如,将字符串列与时间或数字列进行比较)可能会阻止使用索引。对于给定的值,如1在数值列,它可能比较等于在字符串列,例如任何数量的值 "1"" 1", "00001",或"01.e1"这排除了对字符串列使用任何索引的可能性。

  • 查找特定索引列MIN()或 MAX()key_col这由预处理器优化,该预处理器检查您是否正在使用 索引中之前出现的所有关键部分在这种情况下,MySQL对每个表达式或 表达式进行一次键查找,并将其替换为常量。如果所有表达式都用常量替换,查询将立即返回。例如: WHERE key_part_N =constantkey_colMIN()MAX()

    SELECT MIN(key_part2),MAX(key_part2)
      FROM tbl_name WHERE key_part1=10;
  • 如果排序或分组是在可用索引的最左前缀(例如上完成的,则对表进行排序或分组 如果所有关键部分后面都有,则按相反顺序读取密钥。请参见 第8.2.1.14节“按优化排序”和 第8.2.1.15节“按优化分组”。 ORDER BY key_part1key_part2DESC

  • 在某些情况下,可以优化查询以检索值而无需查询数据行。(为查询提供所有必要结果的索引称为 覆盖索引。)如果查询仅从表中使用某些索引中包含的列,则可以从索引树中检索所选值,以提高速度:

    SELECT key_part3 FROM tbl_name
      WHERE key_part1=1

对于报表查询处理大多数或所有行的小型表或大型表,索引的重要性不那么重要。当查询需要访问大多数行时,顺序读取要比处理索引快。顺序读取可以最大程度地减少磁盘查找,即使查询不需要所有行。有关详细信息请参见第8.2.1.20节“避免全表扫描”

 

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MYSQL5.7 INDEXES之如何使用索引(一)

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

下载Word文档

猜你喜欢

MYSQL5.7 INDEXES之如何使用索引(一)

Most MySQL indexes (PRIMARY KEY, UNIQUE, INDEX, and FULLTEXT) are stored in B-trees. Exceptions: Indexes on spatial data types use
2019-05-27

MySQL索引如何创建和使用索引

创建MySQL索引可以通过以下两种方式:使用CREATE INDEX语句创建索引:CREATE INDEX index_name ON table_name (column_name);例如,要在名为students的表上创建一个名为stu
MySQL索引如何创建和使用索引
2024-03-06

python如何使用负索引

这篇文章主要介绍python如何使用负索引,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!负索引人们喜欢使用序列,因为当我们知道元素的顺序,我们就可以按顺序操作这些元素。在Python中,字符串、元组和列表是最常见的序
2023-06-27

数据库索引如何使用

数据库索引是一种优化数据库查询性能的技术。通过使用索引,可以快速定位到数据库中存储的数据,减少查询的时间和资源消耗。使用数据库索引的步骤如下:1. 设计索引:在表中选择需要创建索引的列。通常选择经常用于查询的列,如主键、外键、经常用于WHE
2023-08-17

C#中如何使用索引器

本篇文章给大家分享的是有关C#中如何使用索引器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、索引器的定义C#中的类成员可以是任意类型,包括数组和集合。当一个类包含了数组和集
2023-06-17

labview索引数组如何使用

在LabVIEW中,可以使用索引数组来访问和修改数组的特定元素。以下是在LabVIEW中使用索引数组的步骤:1. 在Block Diagram窗口中,找到要索引的数组。2. 从Functions面板中的Array & Cluster类别中选
2023-09-15

Mysql覆盖索引如何使用

在MySQL中,覆盖索引是指索引包含了查询需要的所有字段,这样MySQL可以直接使用索引来返回查询结果,而不需要再去访问数据表。这可以提高查询性能,减少IO操作。要使用覆盖索引,需要创建一个包含查询需要的所有字段的索引。然后在查询时,只选
Mysql覆盖索引如何使用
2024-04-09

编程热搜

目录