前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >联合索引这几道题,我都没全答对?

联合索引这几道题,我都没全答对?

作者头像
用户3467126
发布2021-10-14 11:10:44
3740
发布2021-10-14 11:10:44
举报
文章被收录于专栏:爱编码爱编码

来源:面试官:谈谈你对mysql联合索引的认识?

如何建联合索引

第1题:

代码语言:javascript
复制
SELECT * FROM table WHERE a = 1 and b = 2 and c = 3;

答案:(a,b,c)或者(c,b,a)或者(b,a,c)都可以

第2题:

代码语言:javascript
复制
SELECT * FROM table WHERE a > 1 and b = 2;

答案:对(b,a)建立索引

第3题:

代码语言:javascript
复制
SELECT * FROM `table` WHERE a > 1 and b = 2 and c > 3;

答案:如果a的区分度比较高就采用(b,a),否则就采用(b,c)

第4题:

代码语言:javascript
复制
SELECT * FROM `table` WHERE a = 1 ORDER BY b;

答案:一看就是对(a,b)建索引,当a = 1的时候,b相对有序,可以避免再次排序。

第5题:

代码语言:javascript
复制
SELECT * FROM `table` WHERE a > 1 ORDER BY b;

答案:对(a)建立索引,因为a的值是一个范围,这个范围内b值是无序的,没有必要对(a,b)建立索引

第6题:

代码语言:javascript
复制
SELECT * FROM `table` WHERE a IN (1,2,3) and b > 1;

答案:对(a,b)建立索引,因为IN在这里可以视为等值引用,不会中止索引匹配,所以还是(a,b)

原因

联合索引遵循最左匹配原则,在遇到范围查询的时候,就会停止匹配。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爱编码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何建联合索引
  • 原因
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档