题解 | 使用索引覆盖效率提升80%

查找学校是北大的学生信息

http://www.nowcoder.com/practice/7858f3e234bc4d85b81b9a6c3926f49f

select语句中使用的索引覆盖所有需要查询的字段

覆盖索引的原理:就是查询字段在 二级索引中全部找到,不需要回表查询

覆盖索引只是特定于具体select语录而言的联合索引。也就是说一个联合索引对于某个select语句,通过索引可以直接获取查询结果,而不再需要回表查询啦,就称该联合索引覆盖了这条select语句。

本题中经过测试,device_id,university 为联合索引,因此:

Select device_id,university FROM user_profile where university = "北京大学" and device_id = user_profile.device_id;

device_id = user_profile.device_id 这一步是100%成立的,使用的目的就是索引覆盖

全部评论
为什么要加device_id = user_profile.device_id这个条件
10 回复 分享
发布于 2022-07-04 18:13
不要这么写,简单的事复杂做,脑子有坑。如果真要效率,university加索引,这种绕来绕去的程序是最可怕的
4 回复 分享
发布于 2023-01-31 16:22 江苏
快个锤子,信了你的邪
2 回复 分享
发布于 2022-08-13 10:06
表都没得索引
1 回复 分享
发布于 2022-07-05 09:09
数据这么少,加索引用处不大,索引也是分场合使用的,原本直接查找的效率就可以,加索引有点浪费
1 回复 分享
发布于 2023-01-02 12:13 河南
速度变慢了。。。。
点赞 回复 分享
发布于 2022-07-23 12:23
加个这速度没快,内存还变大了
点赞 回复 分享
发布于 2022-08-19 08:34 四川
统一个回复,题目的表的索引变了
点赞 回复 分享
发布于 2022-08-21 12:56 北京
不是很理解
点赞 回复 分享
发布于 2022-09-28 14:59 江西
什么索引不索引的,什么意思
点赞 回复 分享
发布于 2022-10-04 17:20 广东
我自己写的42ms,用这个44ms
点赞 回复 分享
发布于 2023-02-08 15:15 湖北
select device_id,university from user_profile where university='北京大学'; 这样写 为啥不通过有啥错误嘛
点赞 回复 分享
发布于 2023-03-07 17:05 江苏
这**又不是两个表,又不需要连接条件,啥***题目
点赞 回复 分享
发布于 2023-10-13 21:23 重庆
人题目没给你这个条件,你在过度解读些什么东西😅
点赞 回复 分享
发布于 2023-11-09 11:13 广东
一直没懂为啥要加这个后面的语句,到where 哪里就应该结束了
点赞 回复 分享
发布于 2023-12-11 11:08 广东
又不是两张表,你用device_id = user_profile.device_id;干什么?不会教人不要乱教
点赞 回复 分享
发布于 08-27 10:42 广东

相关推荐

11-07 13:31
怀化学院 Java
勇敢牛牛不怕难:又疯一个
点赞 评论 收藏
分享
10-09 09:39
门头沟学院 C++
HHHHaos:这也太虚了,工资就一半是真的
点赞 评论 收藏
分享
100 16 评论
分享
牛客网
牛客企业服务