快手java后端1面,说点自己没答好的题大家讨论一下

也是求点答案吧,有些搜也没搜全。

1.线程切换需要消耗哪些资源

2.不用线程池的话,需要一个线程就创一个线程,会出现什么问题

3.为什么myisam读比较快

4.B+树高度和I/O次数为什么相等

5.这个是着重想问的。下面几个sql语句怎么走索引,怎么查到之后拿出数据

题目:建立索引(name,age)主键为id,
select (id,name, age) from XX where name like "%AA%"
select (id,name, age) from XX where age>10
select (id,name, age) from XX where age>10 and name like "AA%"

特别是这个第五题,答的一塌糊涂,求大家解答


很抱歉一开始第五题打错了,没有sex!!!
#秋招##快手##面经##Java#
全部评论
第一个不能走索引,因为模糊匹配以%开头 第二个不能走索引,因为最左匹配原则 第三个可以走部分索引,因为and两边的条件可以交换,并且name字段的条件没有以%开头
8
送花
回复 分享
发布于 2020-08-01 23:12
select (id,name, age)。这些数据直接在二级索引全部能获得到。所以都是走name_age索引。管他啥啥啥条件
4
送花
回复 分享
发布于 2020-08-04 22:36
国泰君安
校招火热招聘中
官网直投
我也有第五题,第一个和第二个都走id,第三个走name_age联合索引。第一个因为有like,最左匹配排除联合索引;第二个没啥好说的肯定是id,第三个稍微难一点,走联合索引叶子结点覆盖索引直接返回结果了,不需要回表
2
送花
回复 分享
发布于 2020-08-01 23:14
sex的话因为只有男和女,mysql优化时候不会走索引; 最左前缀原则楼主可以去了解一下 like%基本不会走索引
点赞
送花
回复 分享
发布于 2020-08-01 22:57
点赞
送花
回复 分享
发布于 2020-08-02 15:25
盆友,你有后续通知嘛,我感觉和你一个面试官
点赞
送花
回复 分享
发布于 2020-08-03 19:28
lz面了多久啊
点赞
送花
回复 分享
发布于 2020-08-04 09:40
lz什么时候投的简历呀?
点赞
送花
回复 分享
发布于 2020-08-04 21:46
老哥有二面消息吗
点赞
送花
回复 分享
发布于 2020-08-06 15:13
可以走覆盖索引。
点赞
送花
回复 分享
发布于 2020-08-06 15:14
B+树树高和IO相等是因为B+树非叶子节点不存储数据 数据都在叶子节点 要一层一层进行IO查询
点赞
送花
回复 分享
发布于 2020-08-06 16:58
亲身实践表示,全都会走联合索引,因为索引覆盖
点赞
送花
回复 分享
发布于 2020-08-07 20:36

相关推荐

9 99 评论
分享
牛客网
牛客企业服务