ITPub博客

首页 > 数据库 > 数据库开发技术 > 这问题学sql第一天的人就会,但是追问几句就是一道质量不错的面试题

这问题学sql第一天的人就会,但是追问几句就是一道质量不错的面试题

原创 数据库开发技术 作者:丁奇3306 时间:2024-10-29 12:45:00 0 删除 编辑
  1. 本周六直播课《读写分离:扩展性和一致性》

  2. 接面试辅导业务,不通过退款

进技术交流群 或 联系方式,见文末海报

===正文分割线===

问题:用以下语句准备数据,版本MySQL 8.0,
默认参数,innodb_change_buffering=none。

create table t(id int primary key, c int, d int, e int, index dc(d,c))engine=innodb;insert into t values(1,1,1,1),(2,2,2,2),(3,3,3,3),(4,4,4,4);update t set c=30 where id=3;select c from t where d=3; 

说明:
1.
没有开启事务,就是两个普通的语句,同一个session里;

针对最后的select语句:

问题1: 返回什么?
回答1: 自然是返回30啊;

追问问题2:执行流程是什么?
回答2: 使用覆盖索引,只扫描dc这个索引,就得到结果了,都不需要回主键上;

追问问题3: dc这个索引上的c的值,是什么时候改的?
回答3:自然是update语句改的;

追问问题4:如果是update语句改的,怎么改呢?
回答4: 就是去dc这个索引上修改c的值;

追问问题5: 这样有没有性能问题?
回答5: ________ 

问:前四个回答对不对呢?还剩下的部分留给评论区~

==例行海豹==




原文作者:丁奇3306;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2024-08-07

  • 博文量
    104
  • 访问量
    44852