关键词不能为空

如何使用索引查询(如何使用索引查询数据)

作者:admin
来源:http://www.sdzsb8.cn/sbrx/18292.html
日期:2022-07-03 13:05
评论:0
阅读 128

如何使用索引查询?如何使用索引查询数据?

如何使用索引查询(如何使用索引查询数据)

深夜,最近在写一些关于SQL优化的文章。我看到在私聊中,很多人都在问如何判断是否需要优化,或者如何检查MySQL的执行计划。本文简要介绍了MySQL EXPLAIN命令。

EXPLAIN命令是查看优化器如何决定执行查询的主要方法。通常,我们会检查执行计划中的以下信息:

SQL如何使用索引

连接查询的执行顺序

扫描的数据行数

可以使用哪些索引?

实际使用了哪些索引?

MySQL解释语法

如下

执行计划中包含的信息

ID描述

指示SELECT语句的执行顺序。ID相同时,执行顺序是从上到下。如果是子查询,ID的序列号会增加。ID越大,优先级越高,执行的优先级也越高。

SELECT_TYPE描述

简单:简单查询,即不包含子查询或联合操作的查询。

PRIMARY:最外层的查询,也就是说,如果查询包含任何子查询,则最外层的查询被标记为PRIMARY。

子查询:映射为子查询,即子查询包含在SELECT或WHERE列表中。

从属子查询:依赖于外部结果的子查询。

派生的:子查询,即出现在FROM子句中的子查询。

UNION: UNION,如果第二个选择出现在UNION之后,则标记为UNION。如果UNION包含在FROM子句的子查询中,外部SELECT将被标记为DERIVED。

union RESULT:使用UNION的结果,即UNION产生的结果集。

表格描述

指当前正在执行的表,即输出数据行所在的表的名称。ID为M,N的查询联合产生的结果集,或ID为N的查询产生的结果.

类型描述

ALL:扫描整个数据表,遍历整个表来查找匹配的行,效率最低。

索引:全索引表扫描。index和ALL的区别在于,索引类型只遍历索引树。

范围:搜索索引列的范围,仅检索给定范围内的行,并使用索引来选择行。这在诸如BETWEEN、and等查询条件中很常见。当MySQL使用索引查找一系列值时,比如in和OR,也会显示范围。

INDEX_MERGE:合并索引并使用多个单列索引进行搜索。

REF:使用非唯一索引扫描或唯一索引的前缀扫描来返回匹配单个值的数据行。但是,它可能会找到多个符合条件的行,因此它应该是搜索和扫描的混合。

EQ_REF:唯一索引扫描。对于每个索引键,表中只有一条数据与之匹配。常见于主键或唯一索引扫描。

CONST:当表中只有一个匹配行时使用。因为只有一行,所以这一行中的列值可以被优化器的其余部分视为常量,比如主键或唯一索引的查询,这是最高效的连接方法。

SYSTEM:SYSTEM是CONST类型的特例,即当查询的表只有一行时(等于SYSTEM表)。

NULL: MySQL在优化过程中分解语句,执行时甚至不需要访问表或索引。例如,从索引列中选择最小值可以通过搜索单独的索引来完成。

表演顺序如下:

一般来说,需要确保查询至少达到范围级别,最好是ref级别。

可能的关键字描述

可能的索引,指示MySQL可以使用哪些索引来优化查询。如果查询中涉及的字段有索引,它将被列出,但可能不会被查询使用。

关键描述

KEY列显示MySQL实际决定使用的索引,如果没有可用的索引,则为NULL。如果查询使用覆盖索引,则该索引仅出现在键列中。要强制MySQL使用或忽略POSSIBLE_KEYS列中的索引,请在查询中使用FORCE INDEX、USE INDEX或IGNORE INDEX。

KEY_LEN描述

指示索引中使用的字节数。查询中使用的索引的长度可以通过该列来计算。KEY_LEN显示的值是索引字段的最大可能长度。理论上长度越短越好,但不是实际长度。也就是说,KEY_LEN是根据表定义计算的,而不是从表中检索的。

参考描述

指示上表的联接匹配条件,即使用哪些列或常数来查找索引列上的值。

行描述

它指示MySQL根据表统计和索引选择找到所需数据要读取的行数。行的值是统计抽样结果,不完全准确。

额外描述

不适合在其他列中显示但很重要的附加信息有以下几种情况:

使用索引:覆盖索引用于查询以避免访问表。

使用where:MySQL将在存储引擎检索行后过滤它们。许多WHERE条件涉及索引中的列,当它读取索引时,存储引擎可以对其进行检查,因此并非所有带有WHERE子句的查询都会显示“using where”。

使用临时:MySQL需要使用临时表存储结果集,常用于排序、子查询和分组查询。

使用文件排序:MySQL中索引无法完成的排序操作称为文件排序。MySQL有两种方式对文件进行排序,这两种方式都可以在内存或磁盘上完成,并且通常以ORDER BY或GROUP BY查询的方式出现。

不存在:使用不存在来优化查询。

选择经过优化的表:直接通过索引获取数据,无需访问表。

使用连接缓冲区:表示在获取连接条件时不使用索引,需要连接缓冲区来存储中间结果。如果出现该值,应该注意的是,根据查询的具体情况,可能需要添加索引来提高性能。

索引失效是由以下原因造成的:

用于计算、函数、类型转换等操作的列。

列用法不等于,例如!=或者。

列使用IS NULL,IS NOT NULL。

模糊查询LIKE以通配符开始,如,

列使用OR来联接条件。

列使用IN和NOT IN。

隐式转换,类型错误,例如,field NUM是varchar,其中condition是number,NUM=1。

WHERE子句和ORDER BY使用同一个索引,ORDER BY的顺序与index的顺序相同,ORDER BY的字段按升序或降序排列,否则不使用索引。

复合索引不符合最佳左前缀原则,或者存在断点。

如果MYSQL评估使用索引比全表扫描慢,则不使用索引。

索引失败优化技巧

可读性:天天是卒,SQL语法优化方法及实例详解。

SQL执行序列

可读:分析SQL查询语句的执行顺序


本文来自网络,不代表「专升本要什么条件_专升本要几年_成人高考专升本_山东专升本信息网」立场,转载请注明出处:http://www.sdzsb8.cn/sbrx/18292.html

如何使用索引查询(如何使用索引查询数据)的相关文章

  • 如何查会考考号(会考准考证号查询)

    如何查会考考号(会考准考证号查询):1、1、带身份证到相关考试单位查询,例如高考分数,可以带身份证到当地招生办查询,其他考试也类似。2、2、去网站查询,不是所有考试都支持的,登陆相关考试的官方网站,进行相

    热讯
  • 如何提高销售人员的状态?

    如何提高销售人员的状态?:上一篇文章写到了,人的状态就是销售里面最好的风水,那么接下来讲讲怎么提高状态。销售是一个传递的过程,在这个过程里面,你投入了什么就会产出什么。销售必须是通过人去执

    百科
  • 三个月增长300%!“下南洋”号角吹响,新晋品牌如何突围?

    三个月增长300%!“下南洋”号角吹响,新晋品牌如何突围?:(图片来源:图虫创意)东南亚电商市场如火如荼,跨境卖家百舸争游。当“下南洋”的号角吹响,诸多卖家们激流入海。而这场速度与激情的角逐中,他仅仅用了三个月的时间,就做

    百科
  • 表白被拒后,如何继续追?

    表白被拒后,如何继续追?:01表白被拒没什么丢脸的。即使失败了,至少曾努力过、勇敢过、表白过。几年之后,也不会因为当初没有行动而懊悔。那种明明很喜欢,却不敢追、不敢表白的行为才是最大的遗憾和懦

    百科
  • 2017年12月大学英语四级真题作文参考范文——如何妥善处理师生关系(2017年四级真题)

    2017年12月大学英语四级真题作文参考范文——如何妥善处理师生关系(2017年四级真题):1、登录不上是因为系统出现故障,可以选择不同时间段进行尝试。2、黑龙江省招生考试院隶属黑龙江省教育厅,公益二类,按副厅级事业单位管理,是黑龙江省招生考试委员会的日常办

    问答
  • 如何查询高考成绩(步骤)陕西省(陕西省成绩查询入口)

    如何查询高考成绩(步骤)陕西省(陕西省成绩查询入口):1、查询方法有多种,支付宝查询为例:1、打开手机支付宝,找到”更多服务“选项。2、2、打开”更多服务“选项后,找到“城市服务”选项。3、3、在“城市服务”选项中找到“高考

    热讯
  • 北极发现甲烷,新能源使用是福音还是灾难前兆?

    北极发现甲烷,新能源使用是福音还是灾难前兆?:地球含有丰富的资源,让人类在地球上可以生存。不过这些资源都是散布世界各地,还有的深埋地底,不过人类靠着自己的聪明才智找到了这些资源,并且把资源运用在生活中,不断提

    百科
  • 高中英语写作技巧:如何写出满分作文?

    高中英语写作技巧:如何写出满分作文?:在高中阶段,大部分学生都把英语学习的重心放在阅读理解、听力选择、填空这些题型上,往往忽略了写作这一块的分值,因此导致大家在考试的时候拿不到满分,而且很多同学也缺少

    百科
  • 2020国家公务员考试:如何进行调剂?(国家公务员调剂入口)

    2020国家公务员考试:如何进行调剂?(国家公务员调剂入口):1、通过报名时的用户名和密码登录“专题网站”,填报申请调剂的相关信息。2、报考人员从即日起,可以登录“中央机关及其直属机构2021年度考试录用公务员专题网站”(简称“专题

    热讯
网站公告