【MySQL关键字】eplain, count, join, union等关键字常见问题

本问题对应的项目链接:高频题回答模版训练
PS:这部分的话,一般问区别比较多,并且还会问你,什么样的场景下应该使用哪一种

1、eplain 关键字用过吗?有什么用?一般我们关注 eplain 的哪些参数?(举几个比较核心的参数吧)

2、inner join,left join,right join 有什么区别?

3、union /union all 的区别?

4、那union和join区别呢?

共以下 2 个回答

  • 終达·斯维达尼亚 永久会员 2024年3月9日 上午11:09

    1、explain 关键字用过吗?有什么用?一般我们关注 explain 的哪些参数?(举几个比较核心的参数吧)

    explain后面加sql语句可以模拟优化器执行sql语句的过程并且将运行时候的情况显示出来。一般用于分析sql语句的性能。其中最关键的参数是type,代表语句查询的方式,常见的值有 ALL(全表扫描),index(使用索引),range(索引范围扫描),const(常量查找)等等,rows 表示预计要扫描的行数,Extra 表示有关执行的其他信息,常见的有 Using index(索引覆盖),Using temporary(临时表)。

    2、inner join,left join,right join 有什么区别?

    inner join 是内连接,left join 是左外连接,right join 是右外连接。内连接和外连接的区别在于,驱动表中的记录不符合 ON 语句中的连接判断条件时,内连接不会把该记录加入最后的结果集,而外连接会,并对于不存在的字段值以 NULL 值显示。左外连接和右外连接都属于外连接,区别在于一个是选取左边的表为驱动表,一个是选取右边的表作为驱动表。(驱动表可以理解为以此表作为连接的参考表)

    驱动表:驱动表是表连接中的基础表,也就是在查询过程中,先生成驱动表的结果集,然后将其一条一条作为过滤条件到被驱动表中查询数据,最后再做合并。可以用 explain 查看 SQL,在输出中排在第一行对应的表就是驱动表,第二行是被驱动表。

    3、union /union all 的区别?

    union 用于将多个 select 语句的结果组合到一个结果集中。使用 union 时默认会对结果集中的重复记录去重,而 union all 会保留重复的记录,且效率要比 union 高。

    4、那union和join区别呢?

    join 是将两张表做连接后,取条件相同的部分记录产生一个结果集。union 是直接将两个字段一样的结果集并在一起,产生一个新的结果集。

    0 赞同 0 条回复
  • 秊 永久会员 2023年8月14日 下午10:12

    1、eplain 关键字用过吗?有什么用?一般我们关注 eplain 的哪些参数?(举几个比较核心的参数吧)

    explain 语句可以显示出某个查询语句的执行计划,可以根据它来优化查询性能。

    一般主要关注的字段有:type,表示查询时访问表的方式,常见的值有 ALL(全表扫描),index(使用索引),range(索引范围扫描),const(常量查找)等等;还有 possible_keys 和 key,前者是可能使用的索引列表,后者是实际使用的索引;还有 key_len 表示索引字段的最大长度;rows 表示预计要扫描的行数;Extra 表示有关执行的其他信息,常见的有 Using index(索引覆盖),Using temporary(临时表),Using filesort(文件排序)等等。

    2、inner join,left join,right join 有什么区别?

    inner join 是内连接,left join 是左外连接,right join 是右外连接。

    内连接和外连接的区别在于,驱动表中的记录不符合 ON 子句中的连接条件时,内连接不会把该记录加入最后的结果集,而外连接会,并对于不存在的字段值以 NULL 值显示。

    左外连接和右外连接都属于外连接,区别在于一个是选取左边的表为驱动表,一个是选取右边的表作为驱动表。

    2.5 驱动表是什么?对于一个语句怎么判断哪张表是驱动表?

    驱动表是表连接中的基础表,也就是在查询过程中,先生成驱动表的结果集,然后将其一条一条作为过滤条件到被驱动表中查询数据,最后再做合并。

    实践中可以用 explain 查看 SQL 的执行计划,在输出中排在第一行对应的表就是驱动表,第二行是被驱动表。

    3、union /union all 的区别?

    union 用于将多个 select 语句的结果组合到一个结果集中。使用 union 时默认会对结果集中的重复记录去重,而 union all 会保留重复的记录,且效率要比 union 高。

    4、那union和join区别呢?

    join 是将两张表做连接后,取条件相同的部分记录产生一个结果集。

    union 是直接将两个字段一样的结果集并在一起,产生一个新的结果集。

    0 赞同 0 条回复

# 回答此问题

后才能回答