当前位置:首页 > Java技术 > JAVA面试题06-Mysql索引

JAVA面试题06-Mysql索引

2022年09月17日 08:18:25Java技术4

1.什么场景下适合创建索引,什么场景下不适合创建索引。?
1.1 where,order by,group by中频繁出现,且数据分布比较离散的列适合创建索引。比如有个用户表,用户名,手机号经常会作为查询条件,且不同用户用户名,手机号都不同(数据较离散),因此适合创建索引。但是用户的性别,虽然也会经常作为查询条件,但是因为性别只有男,女,未知等几种,数据不够离散,因此不适合创建索引。为什么要离散?
1.2 频繁修改的列不适合创建索引。mysql索引基于B+树实现,修改数据时,需要修改对应的索引。

2.联合索引命中规则?
联合索引命中规则为最左匹配原则(mysql索引基于B+树实现)。
假设A,B,C三列创建了联合索引,
能命中索引的

where A=xx
where A=xx and B=xx
where A=xx and B=xx and C=xx

不能命中索引的

where B=xx
where C=xx
where B=xx and c=xx

3.索引命中规则
扩充一下第二题,也是最左匹配(mysql索引基于B+树实现),假设A列创建了索引
能命中的

<,<=,=,>,>=,BETWEEN,IN, like 'xx%'

不能命中的

<>,not in ,!=,like '%xx'

字符串转数字. 比如mobile varchar(11)

 where mobile=131xxxxxxxx

对列进行函数运算的情况

where md5(password) =' xxxx'

NULL会导致索引形同虚设,所以在设计表结构时应避免NULL 的存在(用其他方式表达你想表达的NULL,比如 -1?)

4.mysql索引的数据结构实现。
简单来说,mysql索引都是基于b+树来实现的,感兴趣的自己去搜一下,还是值得花点时间研究一下的。
非叶子节点只存储子节点数据的范围,数据只存在叶子节点中,

作者:tom_66
来源链接:https://blog.csdn.net/fclxyz/article/details/63751018

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/42455.html

分享给朋友:

“JAVA面试题06-Mysql索引” 的相关文章

并发编程|说完AQS,面试官为何不淡定了?

并发编程|说完AQS,面试官为何不淡定了?

你能说下什么是AQS AQS是队列同步器AbstractQueueSynchronizer的简写,它是用来构建锁和其他同步组件的基础框架,它定义了一个全局的int 型的state变量,通过内置的FIFO(先进先出)队列来完成资源竞...

Java集合---面试题

HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中,甚至会要求你实现...

蚂蚁金服测试开发的面试题【杭州多测师】【杭州多测师_王sir】

1、抽象类和Java当中的接口有什么区别 2、Java中空指针是怎么引起的? 3、Java的多线程是怎么实现的? 4、Java用的哪些框架? 5、Java中截图或者录屏用代码怎么实现的 6、自己有没有开发过什么小工具 7、自己搭建过什么关于Java的...

IOS面试题详解(二)..

IOS面试题详解(二)..

上一篇文章列出了共32道IOS面试题: http://www.cnblogs.com/fkdd/archive/2012/03/13/2394724.html 下面从第一题开始解答: 题目:1.Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?...

4.面试必问:线程池的原理是什么?

4.面试必问:线程池的原理是什么?

虽然线程给我们程序带来了更高的执行效率,但是线程不是创建的越多越好,那么线程创建的过多,会带来什么问题呢? 线程之间频繁的进行上下文切换,增加系统的负载 线程的创建和销毁本身也是非常消耗资源的 所以为了解决上面这个问题,让...

一文高效图解二叉树面试题

一文高效图解二叉树面试题

点击蓝色“码出高效面试的程序媛”关注我, 了解更多技术流行面试题 二叉树,搜索二叉树,是算法面试的必面题。聊聊面试点: 一、树 & 二叉树 树的组成为节点和边,节点用来储存元素。节点组成为根节点、父节点和子节点。 如图:树深 leng...

rabbitmq面试题

rabbit面试题 1.什么是rabbitmq 采用AMQP高级消息队列协议的一种消息队列技术,最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦 2.为什么要使用rabbitmq 1.在分布式系统下具备异步,削峰...

分布式|redis持久化,面试必问!!!

分布式|redis持久化,面试必问!!!

四、redis持久化 为什么需要持久化? redis的数据都是存放到内存中的,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证redis在内存中的数据不会丢失,这种机制就叫redis持久化机制。 持久化的方式...

Spring Boot面试题汇总,含答案

Spring Boot面试题汇总,含答案

1 什么是springboot ? 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 创建独立的spring引用程序 main方法运行  嵌入的Tomcat 无需部署war文件&nb...

Java面试题超详细讲解系列之八【SQL优化篇】

SQL优化一般面试中我们能记住五条左右,被问到能够流畅自信说出几条是没有问题的,小伙伴们可根据自己理解在以下SQL优化技巧中找几条记住即可,理解为主,基础篇面试汇总可查看博主此文:Java基础面试题(2022最新版汇总) 52条S...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。