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

相关推荐

  • 国内oa厂商

    国内OA(Office Automation)厂商的发展呈现以下几个方面:提供个性化解决方案、注重移动办公兼容性、增强数据安全性、强调云服务平台、聚焦行业特定需求。OA厂商在提供个性化解决方案上下功夫,满足不同企业的办公自动化需求。此外,随着智能移动设备的普及,厂商重视移动办公的开发,让用户能随时随…

    2024年1月12日
    18500
  • 工作站是什么

    工作站是一种专门为专业工作人员设计的计算机系统,主要特征包括:1、高性能硬件配置;2、专业操作系统;3、针对特定应用的优化。它们通常配备了强大的处理器、大容量内存和专业级显卡,运行高级操作系统,如UNIX,以便处理大数据量、计算密集型的任务。无论是科研、制图、音频视频处理还是复杂的3D渲染,工作站都…

    2023年8月7日
    65800
  • 如何做好项目日常安全管理工作

    项目的日常安全管理工作是确保施工现场安全、顺利完成项目目标的关键。要做好这项工作,需关注几个核心要点:构建健全的安全管理体系、定期进行安全培训、实施严格的安全监督与检查、及时处理安全隐患、建立完善的应急处理机制。其中,构建健全的安全管理体系是基础,它涉及到制定全面的安全管理规范和程序,确保每一个环节…

    2024年4月11日
    5200
  • 产品管理如何与市场营销协同工作

    在当今商业环境下,产品管理与市场营销的协同工作是企业获得成功的关键。本文通过分析1、双方角色的相互补充;2、共享市场情报;3、协调一致的品牌信息传递;4、配合执行战略上市计划;5、共同策划和参与市场反馈机制等核心观点,探讨了这种协同如何实现并对企业成长带来的益处。产品管理的专注在于产品的规划与交付,…

    2023年11月15日
    34500
  • 功能开发和系统开发有什么区别

    功能开发和系统开发的区别有:1、目标不同;2、开发复杂度不同;3、周期长度不同;4、资源需求不同;5、应用范围不同;6、测试与维护不同。其中,目标不同指的是功能开发旨在实现特定的功能,而系统开发则涉及完整的系统结构和组件。 1、目标不同 功能开发:重点在于满足用户的某一特定需求或解决某个具体问题。例…

    2023年7月30日
    55600
  • 公司如何管理横向课题项目

    横向课题项目的管理关键在于维持团队的沟通、合作和协调。明确项目目标、维护良好的沟通、打造跨部门合作机制、制定灵活的项目计划、强化项目监控以及鼓励团队创新是公司管理横向课题项目时的重要措施。在这些要点中,维护良好的沟通至关重要,因为横向课题通常涉及不同职能部门的专家,高效的信息流通是确保每个团队成员都…

    2024年4月10日
    5200
  • 项目成本管理包括哪些工作

    包括:一、规划阶段;二、估算阶段;三、预算阶段;四、监控阶段;五、控制阶段。规划阶段将列明项目成本管理的目标、可行性分析、成本估算方法、成本预算、变更控制、风险管理、质量控制、成本报告以及监控和评估方法,从而为后续的工作提供指导和支持。 一、规划阶段 在项目规划阶段,项目经理需要制定项目的成本管理计…

    2023年4月30日
    53600
  • 办公oa系统哪个

    办公OA系统选择,需考虑因素包括:1、系统功能丰富性;2、易用性和用户界面友好度;3、定制化和扩展能力;4、安全性和稳定性;5、成本效益和投资回报率。 开展详细论述时,应观察某款系统如何融合上述各点,例如易用性和用户界面友好度,确保员工能快速掌握系统操作,减少培训时间和成本,提升工作效率。 一、系统…

    2024年1月11日
    19100
  • azure devops可以做什么

    Microsoft Azure DevOps提供了一整套DevOps工具支持,包括源代码管理、持续集成/持续部署(CI/CD)、项目管理、自动化构建及测试、包管理、以及与各类工具的集成等。Azure DevOps致力于简化团队在软件开发全周期内的协作和流程自动化,提高软件交付的效率和质量。例如,其源…

    2024年3月26日
    6800
  • 泛微oa系统运维

    标题:泛微OA系统运维实践概览 泛微OA系统作为企业日常办公自动化的核心平台,其运维工作对保障业务流程的连续性与高效性至关重要。1、系统监控与预警、2、数据备份与恢复、3、性能优化、4、安全管理。专注于数据备份与恢复措施,实施定期备份策略,确保关键数据通过多重备份,并能够迅速恢复,以此降低数据丢失或…

    2024年1月15日
    32500

发表回复

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

400-800-1024

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

分享本页
返回顶部