首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【mysql系列】细谈explain执行计划之“谜”

因为只匹配一行数据,所以如果将主键置于where列表中,mysql能将该查询转换为一个常量 3.eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。...ref: 显示索引的哪一列被使用了,如果有可能是一个常数,哪些列或常量被用于查询索引列上的值 rows: 根据表统计信息以及索引选用情况,大致估算出找到所需的记录所需要读取的行数 filtered: 指返回结果的行占需要读到的行...const 表示通过索引一次就找到了,const用于比较primary key 或者 unique索引(查询类型与索引类型有关)。因为只需匹配一行数据,所有很快。...eq_ref 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或 唯一索引扫描。...注意:class表,上面创建表时,建立class_name索引;同样的查询用于teacher表中,便会全表扫描。 all MySQL将遍历全表以找到匹配的行。

91710

MySql知识体系总结(2021版)请收藏!!

const用于用常数值比较PRIMARY KEY或UNIQUE索引的所有部分时。 eq_ref:对于每个来自于前面的表的行组合,从该表中读取一行。这可能是最好的联接类型,除了const类型。...对前面的表的每个行组合,MySQL检查是否可以使用range或index_merge访问方法来索取行。 Using filesort:MySQL需要额外的一次传递,以找出如何按排序顺序检索行。...通过根据联接类型浏览所有行并为所有匹配WHERE子句的行保存排序关键字和行的指针来完成排序。然后关键字被排序,并按排序顺序检索行。...Using index:从只使用索引树中的信息而不需要进一步搜索读取实际的行来检索表中的列信息。当查询只使用作为单一索引一部分的列时,可以使用该策略。...Using where:WHERE子句用于限制哪一个行匹配下一个表或发送到客户。

1.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java面试之数据库面试题

    游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。...2 )用户通过简单的查询可以从复杂查询中得到结果。 3 )维护数据的独立性,试图可从多个表检索数据。 4 )对于相同的数据可产生不同的视图。...12、主键和外键的区别? 主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。 13、在数据库中查询语句速度很慢,如何优化?...第一范式:列不可再分 第二范式:行可以唯一区分,主键约束 第三范式:表的非主属性不能依赖与其他表的非主属性 外键约束 且三大范式是一级一级依赖的,第二范式建立在第一范式上,第三范式建立第一第二范式上 15...4)分页查询时候时候,mysql用limit oracle用rownum mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 //为了检索从某一个偏移量到记录集的结束所有的记录行

    1.5K20

    数据库经典面试题,都给你收集好了!!!

    游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。...2 )用户通过简单的查询可以从复杂查询中得到结果。 3 )维护数据的独立性,试图可从多个表检索数据。 4 )对于相同的数据可产生不同的视图。...12、主键和外键的区别? 主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。 13、在数据库中查询语句速度很慢,如何优化?...第一范式:列不可再分 第二范式:行可以唯一区分,主键约束 第三范式:表的非主属性不能依赖与其他表的非主属性 外键约束 且三大范式是一级一级依赖的,第二范式建立在第一范式上,第三范式建立第一第二范式上 15...4)分页查询时候时候,mysql用limit oracle用rownum mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 //为了检索从某一个偏移量到记录集的结束所有的记录行

    1.6K30

    Java面试之数据库面试题

    游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。...2 )用户通过简单的查询可以从复杂查询中得到结果。 3 )维护数据的独立性,试图可从多个表检索数据。 4 )对于相同的数据可产生不同的视图。...12、主键和外键的区别? 主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。 13、在数据库中查询语句速度很慢,如何优化?...第一范式:列不可再分 第二范式:行可以唯一区分,主键约束 第三范式:表的非主属性不能依赖与其他表的非主属性 外键约束 且三大范式是一级一级依赖的,第二范式建立在第一范式上,第三范式建立第一第二范式上 15...4)分页查询时候时候,mysql用limit oracle用rownum mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 //为了检索从某一个偏移量到记录集的结束所有的记录行

    1.5K41

    数据库常见的面试题大全

    游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。...2 )用户通过简单的查询可以从复杂查询中得到结果。 3 )维护数据的独立性,试图可从多个表检索数据。 4 )对于相同的数据可产生不同的视图。...12、主键和外键的区别? 主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。 13、在数据库中查询语句速度很慢,如何优化?...第一范式:列不可再分 第二范式:行可以唯一区分,主键约束 第三范式:表的非主属性不能依赖与其他表的非主属性 外键约束 且三大范式是一级一级依赖的,第二范式建立在第一范式上,第三范式建立第一第二范式上 15...4)分页查询时候时候,mysql用limit oracle用rownum mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 //为了检索从某一个偏移量到记录集的结束所有的记录行

    1.4K40

    2020年MySQL数据库面试题总结(50道题含答案解析)

    6、主键和候选键有什么区别? 表格的每一行都由主键唯一标识,一个表只有一个主键。 主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。...主键,是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字 PRIMARY KEY 来创建。...快速访问数据表中的特定信息,提高检索速度 创建唯一性索引,保证数据库表中每一行数据的唯一性。...内连接  则是只有条件的交叉连接,根据某个条件筛选出符合条件的记录,不符合条件的记录不会出现在结果集中,即内连接只连接匹配的行。...游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。

    4K20

    2020最新版MySQL数据库面试题(一)

    第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。 第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。...上图中,根据id查询记录,因为id字段仅建立了主键索引,因此此SQL执行可选的索引只有主键索引,如果有多个,最终会选一个较优的作为检索的依据。...使用索引查询不一定能提高查询性能,索引范围查询(INDEX RANGE SCAN)适用于两种情况: 基于一个范围的检索,一般查询返回结果集小于表中记录数的30% 基于非唯一性索引的检索 百万级别或以上的数据如何删除...对于每一次的查询都是从根节点出发,查找到叶子节点方可以获得所查键值,然后根据查询判断是否需要回表查询数据。...而在B+树中,顺序检索比较明显,随机检索时,任何关键字的查找都必须走一条从根节点到叶节点的路,所有关键字的查找路径长度相同,导致每一个关键字的查询效率相当。

    1.1K60

    MySQL数据库知识点

    索引使用场景(重点) where 上图中,根据id查询记录,因为id字段仅建立了主键索引,因此此SQL执行可选的索引只有主键索引,如果有多个,最终会选一个较优的作为检索的依据。...对于每一次的查询都是从根节点出发,查找到叶子节点方可以获得所查键值,然后根据查询判断是否需要回表查询数据。...外键:在一个表中存在的另一个表的主键称此表的外键。 SQL 约束有哪几种? SQL 约束有哪几种? NOT NULL: 用于控制字段的内容一定不能为空(NULL)。...FOREIGN KEY: 用于预防破坏表之间连接的动作,也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。 CHECK: 用于控制字段的值范围。...初始记录行的偏移量是 0(而不是 1) mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为

    78320

    MySQL 给你问懵了?50 道 MySQL 高频面试题详解来了

    6、主键和候选键有什么区别? 表格的每一行都由主键唯一标识,一个表只有一个主键。 主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。...主键,是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字 PRIMARY KEY 来创建。...快速访问数据表中的特定信息,提高检索速度 创建唯一性索引,保证数据库表中每一行数据的唯一性。...内连接 则是只有条件的交叉连接,根据某个条件筛选出符合条件的记录,不符合条件的记录不会出现在结果集中,即内连接只连接匹配的行。...游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。

    2.7K11

    MySQL经典52题

    6.主键和候选键有什么区别?表格的每一行都由主键唯一标识,一个表只有一个主键。主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。7.myisamchk是用来做什么的?...内连接 则是只有条件的交叉连接,根据某个条件筛选出符合条件的记录,不符合条件的记录不会出现在结果集中,即内连接只连接匹配的行。...游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。...1、从定义上却分主键:唯一标识一条记录,不能有重复的,不允许为空外键:表的外键是另一表的主键, 外键可以有重复的, 可以是空值索引:该字段没有重复值,但可以有一个空值2、从作用上区分主键:用来保证数据完整性外键...:用来和其他表建立联系用的索引:是提高查询排序的速度3、从个数上区分主键:主键只能有一个外键:一个表可以有多个外键索引:一个表可以有多个唯一索引52.SQL语句优化方法Where子句中:where表之间的连接必须写在其他

    11510

    一文搞懂MySQL索引(清晰明了)

    这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。...这种存储方式是依靠B+树来实现的,根据表的主键构造一棵B+树且B+树叶子节点存放的都是表的行记录数据时,方可称该主键索引为聚簇索引。...因此,对于InnoDB表,我们一般定义主键为不可更新。 二级索引访问需要两次索引查找,第一次找到主键值,第二次根据主键值找到行数据。...InnoDB和MyISAM的索引检索过程 对于InnoDB和MyISAM而言,主键索引是根据主关键字来构建的B+树存储结构,辅助索引则是根据辅助键来构造的B+树存储结构,彼此的索引树都是相互独立的...InnoDB辅助索引的访问需要两次索引查找,第一次从辅助索引树找到主键值,第二次根据主键值到主键索引树中找到对应的行数据。

    1.3K20

    《SQL必知必会》万字浓缩精华

    如果把表想象成一个网格,那么网格中垂直的列则为表列,水平则为表行。 行表示的是一个记录。行有时候也称之为记录。 主键 表中每一行都应该都有一列或者几列来唯一标识自己。主键用来表示一个特定的行。...如果表中的列可以作为主键,则它必须满足: 任意两行都不具有相同的主键值(主键列不允许NULL值) 每行都必须有一个主键值 主键列中的值不允许修改或者更新 主键值不能重用(如果某行从表中删除,则它的主键不能赋给以后的行记录...语句从表中检索一个或者多个数据列。...WHERE子句来指定联结条件,则返回的是笛卡尔积,返回出来数的行就是第一个表中的行乘以第二个表中的行。...二十一、使用游标 本章节中讲解的是什么是游标,以及如何使用游标。 什么是游标 SQL检索操作返回一组称为结果集的行,这组返回的行都是与SQL语句相匹配的行(零行或者多行)。

    7.5K31

    SQL必知必会总结

    主键 表中每一行都应该都有一列或者几列来唯一标识自己。主键用来表示一个特定的行。 主键:一列或者几列,其值能够标识表中每行。...如果表中的列可以作为主键,则它必须满足: 任意两行都不具有相同的主键值(主键列不允许NULL值) 每行都必须有一个主键值 主键列中的值不允许修改或者更新 主键值不能重用(如果某行从表中删除,则它的主键不能赋给以后的行记录...语句从表中检索一个或者多个数据列。...WHERE子句来指定联结条件,则返回的是笛卡尔积,返回出来数的行就是第一个表中的行乘以第二个表中的行。...二十一、使用游标 本章节中讲解的是什么是游标,以及如何使用游标。 什么是游标 SQL检索操作返回一组称为结果集的行,这组返回的行都是与SQL语句相匹配的行(零行或者多行)。

    9.2K30

    MySQL优化总结

    clo = 1 那么,使用这条sql查询,可直接从(clo1,clo2)索引树中获取数据,无需回表查询 因此我们需要尽可能的在select后只写必要的查询字段,以增加索引覆盖的几率。...因为仅有一行,在这行的列值可被优化器剩余部分认为是常数。const表很快,因为它们只读取一次!eq_ref:对于每个来自于前面的表的行组合,从该表中读取一行。...Using filesort:MySQL需要额外的一次传递,以找出如何按排序顺序检索行。Using index:从只使用索引树中的信息而不需要进一步搜索读取实际的行来检索表中的列信息。...因为仅有一行,在这行的列值可被优化器剩余部分认为是常数。const表很快,因为它们只读取一次! eq_ref:对于每个来自于前面的表的行组合,从该表中读取一行。...Using filesort:MySQL需要额外的一次传递,以找出如何按排序顺序检索行。 Using index:从只使用索引树中的信息而不需要进一步搜索读取实际的行来检索表中的列信息。

    1.7K40

    精选MySQL面试题(附刷题小程序)

    外键: 在一个表中存在的另一个表的主键称此表的外键。 1.2 LIKE 和 REGEXP 操作有什么区别? LIKE 和 REGEXP 运算符用于表示 ^ 和%。...where根据id查询记录,因为id字段仅建立了主键索引,因此此SQL执行可选的索引只有主键索引,如果有多个,最终会选一个较优的作为检索的依据。...consts 单表中最多只有一个匹配行(主键或者唯一索引),在优化阶段即可读取到数据。 ref 指的是使用普通的索引(normal index)。 range 对索引进行范围检索。...初始记录行的偏移量是 0(而不是 1) -- 检索记录行 6-15 SELECT * FROM table LIMIT 5,10; 为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为...在第一次查询的结果集中找出关联数据的id,根据这些id发起第二次请求得到关联数据。

    75230

    【21】进大厂必须掌握的面试题-65个SQL面试

    主键 是一列(或列的集合)或一组列的唯一标识表中的每一行。 唯一标识表中的一行 不允许为空值 示例-在学生表中,Stu_ID是主键。 Q8。 什么是约束?...SQL中的聚集索引和非聚集索引之间的区别是: 聚集索引用于轻松地从数据库中检索数据,并且速度更快,而从非聚集索引中读取数据则相对较慢。...列出不同类型的联接? 有多种类型的联接用于检索表之间的数据。有四种类型的联接,即: 内部联接:MySQL中的内部联接是最常见的联接类型。它用于从满足联接条件的多个表中返回所有行。...左连接: MySQL中的左连接用于返回左表中的所有行,但仅返回右表中满足连接条件的匹配行。 右连接: MySQL中的右连接用于返回右表中的所有行,但仅返回满足连接条件的左表中的匹配行。...第一范式(1NF) –行内没有重复的组 第二范式(2NF) –每个非键(支持)列的值都取决于整个主键。 第三范式(3NF) –仅取决于主键,而没有其他非键(支持)列值。 Q23。

    6.9K22

    MySQL高级--性能优化之Explain分析SQL

    UNION RESULT: 从UNION表获取结果的SELECT。 1.4 当前数据表名 table: 查询当前这一行数据是关于哪个表的。...const: 表通过索引一次就能找到了,const用于比较 primary key 和 unique 索引。因为只匹配一行数据,所以很快。...如将主键置于where列表中,MySQL就能将该查询转换为一个常量。 eq_ref: 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。 常见于主键或唯一索引扫描。...key_len显示的值为索引字段的最大可能长度, 并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出来的。...覆盖索引(Covering Index) : 就是 select 的查询的列从索引中就可以获取到,而不必去读取表中的原始数据,MySQL可以利用索引返回 select 列表中的字段,而不必根据索引再次读取数据文件

    93430

    MySQL入门必须知道的知识点!

    image.png 如果是等值查询,那么哈希索引明显有绝对优势,因为只需要经过一次算法即可找到相应的键值;前提是键值都是唯一的,如果键值不是唯一的,就需要先找到该键所在位置,然后再根据链表往后扫描,直到找到相应的数据...4.type:优化sql的重要字段,也是我们判断sql性能和优化程度重要指标,他的取值类型范围: const:通过索引一次命中,匹配一行数据; system:表中只有一行数据,相当于系统表...; eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条数据与之匹配; ref:非唯一性索引扫描,返回匹配某个值的所有; range:只检查给定范围的行,使用一个索引来选择行...) 不损失精确性的情况下,长度越短越好 8、ref:列与索引的比较,表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值 9、rows:估算出结果集行数,表示MySQL根据表统计信息及索引选用情况...主键:是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字PRIMARY KEY来创建。

    55800

    2022 最新 MySQL 面试题

    6、主键和候选键有什么区别? 表格的每一行都由主键唯一标识 ,一个表只有一个主键。 主键也是候选键。 按照惯例, 候选键可以被指定为主键, 并且可以用于任何外键 引用。...快速访问数据表中的特定信息, 提高检索速度 创建唯一性索引, 保证数据库表中每一行数据的唯一性。...个表的所有记录和另一个表中的所有记录一一匹配。...内连接 则是只有条件的交叉连接 ,根据某个条件筛选出符合条件的记录 ,不符合 条件的记录不会出现在结果集中, 即内连接只连接匹配的行。...游标: 是对查询出来的结果集作为一个单元来有效的处理。 游标可以定在该单元 中的特定行, 从结果集的当前行检索一行或多行。 可以对结果集当前行做修改。

    10210
    领券