mysql为什么添加datetime列索引查询反而很慢

mysql添加datetime列索引查询反而很慢有以下几个方面:1、字段类型不匹配导致的索引失效;2、被索引字段使用了表达式计算;3、被索引字段使用了内置函数等。进行 SQL 数据查询的时候,Mysql 会进行隐式的数据类型转换,导致在进行数据查询的时候并没有使用索引。

mysql为什么添加datetime列索引查询反而很慢

一、字段类型不匹配导致的索引失效

进行 SQL 数据查询的时候,where 条件字段类型与实际表中字段类型不匹配的时候,Mysql 会进行隐式的数据类型转换,而类型转换会使用到内置函数,导致在进行数据查询的时候并没有使用索引。我们可以使用 explain 命令查看 sql 语句。可以看的出来在 key 栏中,对应的值为 null,说明并没有使用索引进行查询。

但是如果在按照 phone_number 字段为字符串类型进行查询的时候,Mysql 没有进行隐式的类型转换,所以最终还是走了索引。

二、被索引字段使用了表达式计算

在 where 中条件使用了条件表达式的时候,数据表中的索引就失效了,实际是因为 Mysql 需要将索引字段取出来之后再进行表达式的条件判断,因而进行了全表扫描,导致索引失效。

三、被索引字段使用了内置函数

索引字段实际上是依赖于整个 B+索引树的遍历,而索引树的遍历又依赖于索引树底层叶子节点的有序性。索引保存的是索引列的原始值,如果经过函数计算,Mysql 的解释器无法判断计算后的索引在原来的索引树上是否可以被索引到,因此它就直接放弃使用索引查询了。

四、like 使用了 %X 模糊匹配

使用左模糊匹配以及左右模糊匹配都会导致索引失效,但是使用右模糊匹配,还是可以走索引查询的。

由于 B+树按照索引值进行排序的,实际是按照最左前缀进行比较,而使用了 %作为最左前缀,Mysql 无法判断其有序性,因此只能进行全表扫描查询。

五、索引字段不是联合索引字段的最左字段

如果数据库表中有联合索引的话,我们在 SQL 查询语句中使用的索引字段又不是联合索引的最左字段,那么就会导致索引失效。

实际上在 Mysql 中的索引检索是遵循最左匹配原则的,同时 B+索引树的叶子节点的有序性也是建立在最左匹配原则之上,而上述的 4、5 两种情况实际违反了最左匹配原则,因此 Mysql 执行器则无法使用对应的索引进行检查查询。

延伸阅读

mysql是什么

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是较好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

文章标题:mysql为什么添加datetime列索引查询反而很慢,发布者:E.Z,转载请注明出处:https://worktile.com/kb/p/61372

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
E.ZE.Z认证作者
上一篇 2023年7月21日 下午3:21
下一篇 2023年7月22日 下午3:01

相关推荐

  • 体细胞重编程什么专业

    体细胞重编程是生物医学工程专业中的一项关键技术,它涉及将已分化的体细胞转变回具有全能性的干细胞状态,即诱导多能干细胞(iPSCs)。发展这项技术对再生医学、疾病模型构建以及个性化医学具有重大意义。在生物学上,体细胞重编程涉及深入理解细胞命运决定的分子机制,同时需要在临床应用上确保技术的安全性和有效性…

    2024年4月27日
    3700
  • 模块化编程的技巧是什么

    在当前的软件开发实践中,模块化编程是一个核心概念,其主要技巧包括1、封装、2、接口隔离、3、依赖倒置、4、单一职责等。封装特别重要,因为它能够隐藏实现细节,仅通过定义良好的接口与模块外部通信。这有助于减少系统各部分之间的依赖,简化维护和更新过程。 一、封装的重要性 封装指的是将数据(属性)和代码(方…

    2024年4月28日
    3400
  • 什么是机器人离线编程

    在工业自动化中,机器人离线编程(Robot Offline Programming, ROP)是一种重要而高效的方法,它允许开发者在不中断生产线的情况下编程和模拟机器人任务。机器人离线编程最核心的优点包括1、提高生产效率、2、减少停机时间、3、提升编程精确性、4、改善工人安全和5、促进灵活制造。通过…

    2024年4月26日
    5100
  • 编程适合什么人看的书

    编程适合具备解决问题能力、逻辑思维强、热爱学习、耐心与细致、创造欲望以及乐于合作的人。以解决问题能力为例,编程本质上是解决现实世界问题的过程。程序员需要不断地面对各种挑战,他们必须能分析问题、设计算法,以及编写和调试代码来找到有效的解决方案。这一能力对于编程至关重要,因为它是编码实践中经常会遇到的核…

    2024年4月28日
    2600
  • 刘强东当年学什么编程

    刘强东曾学习过的编程包括1、SOCRATES编程语言,2、其他编程技术。 其中,SOCRATES编程语言是较为特殊的。这种语言不同于常见的编程语言,它是专为特定领域设计的,具有独特的应用场景和学习背景。刘强东在接触这门编程语言时,主要是为了解决当时遇到的具体问题,展示了他解决问题的能力和对技术应用的…

    2024年4月27日
    5800
  • 编程中两个除号代表什么

    在编程中,两个除号通常代表整数除法。整数除法的结果是将除法的结果向下舍入到最接近的整数值。例如,在Python语言中,表达式7 // 3的结果是2而不是2.333…。与单个除号进行的普通除法(也称为浮点除法)不同,使用两个除号的除法舍弃了结果的小数部分,仅保留整数部分。 整数除法的应用之…

    2024年4月27日
    4600
  • SaaS平台是什么

    SaaS,是Software-as-a-Service的缩写名称,意思为软件及服务,即通过网络提供软件服务。SaaS是基于互联网提供软件服务的软件应用模式。简单说就是在线系统模式,即软件服务商提供的软件在线服务。 一、SaaS平台是什么 SaaS(Software-as-a-service)的意思是…

    2023年4月29日
    93000
  • 编程什么电脑行

    选择适合编程的电脑 选择一台适合编程的电脑建议关注以下几个核心要素:1、处理器的性能;2、内存容量;3、存储类型和容量;4、屏幕尺寸和分辨率。在这些因素中,处理器的性能对编程尤为重要,因为它直接影响到编译代码的速度以及多任务处理的能力。一个快速的处理器可以缩短等待时间,提高编程效率。 一、处理器性能…

    2024年5月2日
    1400
  • 什么叫脚本编程

    脚本编程是一种编写计算机命令的自动化方式,1、通常用来执行常规任务、2、管理系统功能或快速处理文本和数据。 在编程世界中,脚本编程通常被认为是编写简单、可执行代码的过程,这些代码用于自动化某些任务。与更传统的编程相比,脚本语言易于学习和使用,它们通常具有较小的学习曲线。举一个脚本编程的例子,如使用P…

    2024年5月2日
    1600
  • 编程创造了什么

    在现代社会中,编程在改变世界方面扮演了重要的角色。1、它推动了技术进步,使得计算机和其他设备能够执行复杂的任务,提升了效率和准确性。尤其是软件的发展,大大改善了各行各业的工作流程,从而促进了经济的增长。除了这些,编程也带来了新的娱乐方式、教育工具和提高了人们的生活水平。 编程与技术进步 编程作为技术…

    2024年5月2日
    1400

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部