“索引什么时候失效?”

面试过程中,A sudden question,是不是有点懵?

没关系,关注我,面试不迷路.

我是Mic,一个工作了14年的Java程序员.

There are many knowledge points involved in index invalidation,So I've put together the answers to this question into one20W字的面试文档里面,Everyone can get it.

下面看看高手的回答

高手:

InnoDBThere are two types of indexes in the engine,One is the primary key index、One is a normal index.

InnoDB用了B+Tree structure to store index data.

When using indexed columns for data queries,Finally, the corresponding data row will be queried in the primary key index tree and returned.

理论上来说,Query using indexed columns,It can greatly improve the query efficiency,But improper use can lead to index failure,Therefore, the value of the index itself cannot be exerted.

There are many situations that can cause an index to fail:

  1. Do operations on indexed columns,比如使用函数,Mysql在生成执行计划的时候,It is based on statistics to determine whether to use the index.

    And add function operation on the index column,导致MysqlIndex column not recognized,There will be no more indexing.

    不过从Mysql8开始,Adding a functional index can solve this problem.

  2. in a composite index consisting of multiple columns,It needs to follow the leftmost matching rule,That is, the search starts sequentially from the leftmost column of the index,否则不会走索引.

    在组合索引中,The storage structure of the index is stored in the order of the index columns,因此在sqlIt also needs to be matched one by one in this order.

    否则InnoDBIndex invalidation due to unrecognized index.

  3. When there is an implicit conversion of the index column, For example, the index column is of type string,但是在sqlNo quotation marks were used in the query.

    那么MysqlType conversion is done automatically,从而导致索引失效.

  4. Use an unequal sign on an indexed column、not查询的时候,Because the retrieval efficiency of index data is very low,因此MysqlThe engine will judge not to go to the index.

  5. 使用likeWildcards match suffixes%xxx的时候,Because this method does not conform to the leftmost matching principle of the index,So it will not go to the index.

    但是反过来,If the wildcard matches the prefixxxx%,Matches the leftmost match,也会走索引.

  6. 使用or连接查询的时候,or语句前后没有同时使用索引,那么索引会失效.只有orWhen the left and right query fields are index columns,才会生效.

Except for these scenarios,For multi-table join query scenarios,Join order also affects index usage.

However, whether to go to the index in the end,我们可以使用explain命令来查看sql的执行计划,Then you can make targeted adjustments.

总结

MysqlThere are many issues that can be investigated. After all, it is also a very frequently used component in work,按道理来说,It is necessary for us to go deep learningMysql的底层原理.

Data security after all、数据IOPerformance affects the overall throughput of the system.

大家记得点赞、收藏加关注.

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议.转载请注明来自 Mic带你学架构

如果本篇文章对您有帮助,还请帮忙点个关注和赞,您的坚持是我不断创作的动力.欢迎关注「跟着Mic学架构」公众号公众号获取更多技术干货!

【Java面试】This Internet high-frequency interview question is stumped80%的程序员?索引什么时候失效?的更多相关文章

  1. 面试宝典:Java面试中最高频的那20%知识点!

    JavaIt is now more than just a development language,It's a whole ecosystem. 作为一个Java程序员,both lucky,也是不幸的.Luckily we have plenty of wheels to use,Unfortunately we have too many wheels to learn. 但是,无论是日常工作 ...

  2. ASP.NET的几个试题(《C#与.NET程序员面试宝典》)

    更多参考:博客园笔记 :ASP.NET是什么 ASP.NET不是一种语言,而是创建动态Web页的一种强大的服务器端技术,它是Microsoft.NET Framework中一套用于生成Web应用程序和 ...

  3. Java入门(1) —— 变量、运算符、An understanding of branching structure and programmer thinking

    1.计算机语言的发展史: 机器语言:机器语言是指一台计算机全部的指令集合. 汇编语言:为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母.A string of symbols to substitute for a specific instruction binary ...

  4. 一线互联网常见的14个Java面试题,你颤抖了吗程序员

    跳槽不算频繁,但参加过不少面试(电话面试.face to face面试),面过大/小公司.互联网/传统软件公司,面糊过(眼高手低,缺乏实战经验,挂掉),也面过人,所幸未因失败而气馁,在此过程中不断查缺 ...

  5. 一线互联网常见的 14 个 Java 面试题,你颤抖了吗程序员

    跳槽不算频繁,但参加过不少面试(电话面试.face to face 面试),面过大 / 小公司.互联网 / 传统软件公司,面糊过(眼高手低,缺乏实战经验,挂掉),也面过人,所幸未因失败而气馁,在此过程 ...

  6. 腾讯java面试经验 (含面试题解析)

    本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.腾讯等公司offer,岗位是Java后端开发,For development reasons, I finally chose to go to Tencent,入职一年时间了,也成为了面试官,之 ...

  7. 一线互联网常见的Java面试题,你颤抖了吗程序员

    跳槽不算频繁,但参加过不少面试(电话面试.face to face面试),面过大/小公司.互联网/传统软件公司,面糊过(眼高手低,缺乏实战经验,挂掉),也面过人,所幸未因失败而气馁,在此过程中不断查缺 ...

  8. 【Java面试】2、面试题汇总

    Java基础部分 面试题总汇--JAVA基础部分 http://www.cnblogs.com/hyhnet/p/5544817.html 115个Java面试题和答案——终极列表(上) http:/ ...

  9. 十大面试难题解惑,看完秒杀一切 HR 面.程序员必读!

    最能体现求职者能力的就是面试,能不能拿到Offer,取决于你面试时的表现,只有有准备才能在面试过程中游刃有余. 小编收集了10个面试官最爱提的问题,虽然题目千变万化,但是万变不离其宗,只要掌握了答题的 ...

  10. Java面试总结(面试流程及核心面试题)

    Java面试流程及核心面试题 面试整体流程 1.1 简单的自我介绍      我是xxxx,工作xxx年.我先后在xxxx公司.yyyy公司工作.先后做个xxxx项目.yyyy项目. 1.2 你简单介 ...

随机推荐

  1. [Spring]支持注解的Spring调度器

    概述 如果想在Spring中使用任务调度功能,除了集成调度框架Quartz这种方式,也可以使用Spring自己的调度任务框架. 使用Spring的调度框架,优点是:支持注解(@Scheduler),可 ...

  2. 如何在Visual Studio 2013中使用Ribbon For WPF

    1.首先需要 下载Ribbon For WPF.目前最新的版本是Microsoft Ribbon for WPF October 2010. 下载 链接: https://www.microsoft. ...

  3. An Implementation of Double-Array Trie

    Contents What is Trie? What Does It Take to Implement a Trie? Tripple-Array Trie Double-Array Trie S ...

  4. Windows Server 2008 R2 The domain controller modifies the domain user password complexity

    1.进入”本地安全策略”进行管理时,Found that the password policy has been locked,无法更改: 2.The procedure to change the password policy in this case is as follows, Enter Group Policy Management: 3.右键点击/编辑Default Domain Policy: 4.在 ...

  5. 用C++实现网络编程---抓取网络数据包的实现方法

    一般都熟悉sniffer这个工具,它可以捕捉流经本地网卡的所有数据包.抓取网络数据包进行分析有很多用处,如分析网络是否有网络病毒等异常数据,通信协议的分析(数据链路层协议.IP.UDP.TCP.甚至各 ...

  6. 【转】自己动手写SC语言编译器

    自序 编译原理与技术的一整套理论在整个计算机科学领域占有相当重要的地位,学习它对程序设计人员有很大的帮助.我们考究历史会发现那些人人称颂的程序设 计大师都是编译领域的高手,像写出BASIC语言的BIL ...

  7. 话说LightningChart是最快最美的图表控件,到底先进在哪里?

    LightningChart Ultimate v.8.2 最新版本新特征告诉你它先进在哪里! 1. Headless 模式 headless模式允许在没有GUI的情况下使用LC.例如,在Window ...

  8. 面试中的Https

    在Http协议中有可能存在信息窃听或身份伪装的安全问题.使用HTTPS通信机制可以有效地防止这些问题. Https Http的缺点 通信使用明文(不加密),内容可能会被窃听. 不验证通信方的身份,因此 ...

  9. c++11 数值类型和字符串的相互转换

    string和数值类型转换 c++11提供了to_string方法,It is convenient to convert various numeric types to 字符串类型: std::string to_string(int value); std::stri ...

  10. hihocoder 1040(矩形判断)

    题目链接:传送门 题目大意:给你四条线段,判断能否围成一个面积大于0的矩形,能输出YES,不能输出NO 题目思路:    合法的四条线段应该满足 1.应该必须有四个不同的点 2.线段斜率分为两组,组内 ...