mysql添加索引和不添加索引的区别及说明

 更新时间:2024年01月27日 16:41:21   作者:Ense  
这篇文章主要介绍了mysql添加索引和不添加索引的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

mysql添加索引和不添加索引区别

在工作中遇到记录日志的表查询慢问题

定位到该sql语句后发现是一个非常简单的select查询

SELECT
    t.id,
    t.job_group,
    t.job_id,
    t.executor_address,
    t.executor_handler,
    t.executor_param,
    t.executor_sharding_param,
    t.executor_fail_retry_count,
    t.trigger_time,
    t.trigger_code,
    t.trigger_msg,
    t.handle_time,
    t.handle_code,
    t.handle_msg,
    t.alarm_status
FROM
    xxl_job_log AS t
WHERE
t.trigger_time >= '2020-01-01 00:00:00.0'
AND 
t.trigger_time <= '2020-01-01 23:59:59.0'
 AND
alarm_status = 0
ORDER BY
t.trigger_time DESC
LIMIT 0,
 10

查询目前表数据条数

八百多万条数据

通过使用explain 定位看到

  • 查询类型:全表扫描
  • 扫描条数:7889316
  • 执行sql耗时:9.563s

经过对sql的定位发现,只要加上trigger_time时间过滤查询,查询速度就会变的非常慢,当去掉

t.trigger_time >= '2020-01-01 00:00:00.0'
AND 
t.trigger_time <= '2020-01-01 23:59:59.0'

ORDER BY
t.trigger_time DESC
  • 后在执行sql:0.002s

因此知道时间都花在了时间过滤的动作上,于是对trigger_time做了索引操作:

ALTER TABLE xxl_job_log ADD INDEX index_job_time (trigger_time)

在使用explain查看select执行情况

  • 扫描范围:局部
  • 扫描条数:694454
  • 执行sql耗时:0.002s

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL数据同步出现Slave_IO_Running: No问题的解决

    MySQL数据同步出现Slave_IO_Running: No问题的解决

    本人最近工作中遇到了Slave_IO_Running:NO报错的情况,通过查找相关资料终于解决了,下面这篇文章主要给大家介绍了关于MySQL数据同步出现Slave_IO_Running: No问题的解决方法,需要的朋友可以参考下
    2023-05-05
  • mysql select缓存机制使用详解

    mysql select缓存机制使用详解

    这篇文章主要介绍了mysql select缓存机制使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • MySQL数据归档小工具mysql_archiver详解

    MySQL数据归档小工具mysql_archiver详解

    这篇文章主要介绍了MySQL数据归档小工具mysql_archiver详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • MySQL5.1忘记root密码的解决办法(亲测)

    MySQL5.1忘记root密码的解决办法(亲测)

    这篇文章主要介绍了MySQL5.1忘记root密码的解决办法(亲测)的相关资料,需要的朋友可以参考下
    2016-01-01
  • MySQL中的binary类型使用操作

    MySQL中的binary类型使用操作

    这篇文章主要介绍了MySQL中的binary类型使用操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • linux mysql 安装与操作

    linux mysql 安装与操作

    mysql是linux平台下最流行的数据库系统,今天介绍的是mysql的安装及简单的操作方法!
    2009-06-06
  • MySQL分支和循环结构方式

    MySQL分支和循环结构方式

    在MySQL中,IF函数用于根据条件返回不同的值,类似于Java的三目运算符,CASE语句则提供了两种形式:简单CASE函数和搜索CASE函数,分别类似于Java中的switch-case结构和多重if判断,这些控制流函数在数据库查询和数据处理中非常有用,可以实现复杂的逻辑判断
    2024-10-10
  • Linux CentOS MySQL数据库安装配置教程

    Linux CentOS MySQL数据库安装配置教程

    这篇文章主要为大家详细介绍了Linux CentOS MySQL数据库的安装配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • openEuler RPM方式安装MySQL8的实现

    openEuler RPM方式安装MySQL8的实现

    本文主要介绍了openEuler RPM方式安装MySQL8的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Linux安装MySQL5.6.24使用文字说明

    Linux安装MySQL5.6.24使用文字说明

    这篇文章主要为大家详细介绍了Linux安装MySQL使用文字说明,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01

最新评论