为什么联合索引还会回表呀?

country 表上 Name和population上有联合索引

执行该语句的时候

但是似乎还是产生了回表(USING WHERE) 而且用的索引也是联合索引 这是为啥????


关注
#面试复盘#
全部评论
数据库索引最左匹配原则 1.建立联合索引时会遵循最左匹配原则,即最左优先,在检索数据时从联合索引的最左边开始匹配 2.如果联合索引中最左边的列不在查询条件中,则不会命中索引
点赞 回复 分享
发布于 2023-01-04 15:14 浙江
我的理解是先走联合索引的覆盖索引,查出符合条件的主键,然后回表查对应的name。如果你把name换成主键,走的索引还是相同的,可以试下
点赞 回复 分享
发布于 2022-04-10 17:43
孩子 这不是回表啊 用到索引了只是在索引范围内查找啊 快去补补基础吧
点赞 回复 分享
发布于 2022-03-23 13:49
mysql 选择索引的几个条件之一: 1。 会优先选择区分度比较高的, 请看 name , 跟popu字段 谁的基数高 2。 会优先选择不需要回表的列。 如果用pop  索引 必定要回表,所以mysql没考虑 3。 order by 出现的列。  所以我推测符合条件2, 采用name_pop的原因就是name_pop不需要回表吧。 emmmm  useing where 代表回表了吗? 我有空在翻翻书, 我也忘记了。
点赞 回复 分享
发布于 2022-03-20 09:29
你直接对主键索引 进行 explain select id from t where id > 10;  也有using where ;
点赞 回复 分享
发布于 2022-03-15 23:10
using where 不是只是说使用到了where查询吗?为啥说回表了?
点赞 回复 分享
发布于 2022-03-15 23:09
Using index:表示相应的select操作用使用覆盖索引,避免访问了表的数据行。如果同时出现using where,表名索引被用来执行索引键值的查找;如果没有同时出现using where,表名索引用来读取数据而非执行查询动作。
点赞 回复 分享
发布于 2022-03-15 23:07
用的Name_pop
点赞 回复 分享
发布于 2022-03-14 00:06
索引优化了,你仔细看explain信息
点赞 回复 分享
发布于 2022-03-14 00:06
猜应该是,<1000000这个条件让查询优化器放弃走索引,全表扫描了
点赞 回复 分享
发布于 2022-03-13 19:45

相关推荐

零OFFER战士:另一个版本查看图片
点赞 评论 收藏
分享
来个厂收我吧:首先,市场侧求职我不是很懂。 但是,如果hr把这份简历给我,我会觉得求职人不适合做产品经理。 问题点: 1,简历的字体格式不统一,排版不尽如人意 2,重点不突出,建议参考star法则写个人经历 3,印尼官方货币名称为印度尼西亚卢比(IDR),且GMV690000印尼盾换算为305人民币,总成交额不高。 4,右上角的意向职位在发给其他公司时记得删除。 5,你所有的经历都是新媒体运营,但是你要投市场营销岗位,jd和简历不匹配,建议用AI+提示词,参照多个jd改一下经历内容。 修改建议: 1,统一字体(中文:思源黑体或微软雅黑,英文数字:time new romans),在word中通过表格进行排版(b站学) 2,校招个人经历权重:实习经历=创业经历(大创另算)>项目经历>实训经历>校园经历 3,请将项目经历时间顺序改为倒序,最新的放最上方。 4,求职方向不同,简历文字描述侧重点也需要不同。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务