面试题汇总——mysql常见面试题汇总

 mysql能问的东西很多,就看人家怎么问了。

参考:https://blog.csdn.net/weixin_45483322/article/details/132390048#17_223

这个mysql经典面试题,截图参考常见的

MySQL 有哪些常见存储引擎?

存储引擎应该怎么选择?

InnoDB和MylSAM主要有什么区别?

MySQL日志文件有哪些?分别介绍下作用?

一条SQL 查询语句的执行顺序?

drop,delete与truncate的区别?

UNION 与 UNION ALL 的区别?

  • 如果使用UNION,会在表链接后筛选掉重复的记录行
  • 如果使用UNION ALL,不会合并重复的记录行
  • 从效率上说,UNION ALL要比UNION快很多,如果合并没有刻意要删除重复行,那么就使用UNION All

count(1)、count(*)与count(列名)的区别?

执行效果:

count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL
count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL
count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者 0,而是表示 null)的计数,即某个字段值为 NULL 时,不统计。

执行速度:

列名为主键,count(列名)会比 count(1)快
列名不为主键,count(1)会比 count(列名)快
如果表多个列并且没有主键,则 count(1)的执行效率优于 count(*)
如果有主键,则 select count(主键)的执行效率是最优的
如果表只有一个字段,则 select count(*)最优。

内连接、外连接、交叉连接、笛卡尔积呢?

内连接(inner join):取得两张表中满足存在连接匹配关系的记录。
外连接(outer join):不只取得两张表中满足存在连接匹配关系的记录,还包括某张表(或两张表)中不满足匹配关系的记录。
交叉连接(cross join):显示两张表所有记录–对应,没有匹配关系进行筛选,它是笛卡尔积在SQL中的实现,如果 A 表有 m 行,B 表有 n 行,那么 A 和 B 交叉连接的结果就有 m*n 行。

笛卡尔积:是数学中的一个概念,例如集合 A={a, b},集合 B={0, 1, 2},那么 AXB={<a, 0>, <a, 1>, <a, 2>, <b, 0>, <b, 1>, <b, 2>}。

那 MySQL 的内连接、左连接、右连接有有什么区别?
MySQL 的连接主要分为内连接和外连接,外连接常用的有左连接、右连接。


MySQL-joins-来源菜鸟教程

inner join内连接,在两张表进行连接查询时,只保留两张表中完全匹配的结果集
left join在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录。
right join 在两张表进行连接查询时,会返回右表所有的行,即使在左表中没有匹配的记录。

 ==============================================================================

SQL 优化

慢 SQL 如何定位呢?


慢 SQL 的监控主要通过两个途径:

慢查询日志:开启MySQL 的慢查询日志,再通过一些工具比如 mysqldumpslow 去分析对应的慢查询日志,当然现在一般的云厂商都提供了可视化的平台。

服务监控:可以在业务的基建中加入对慢SQL的监控,常见的方案有字节码插桩、连接池扩展、ORM框架过程,对服务运行中的慢SQL进行监控和告警。

索引的分类

为什么使用索引会加快查询

创建索引有哪些注意点?

索引哪些情况下会失效呢?

==============================================================================

分组相关

参考:https://blog.csdn.net/qq_47699076/article/details/127946512

参考:https://blog.csdn.net/bjweimengshu/article/details/131842528

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值