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中库的基本操作指南(推荐!)

    MySQL中库的基本操作指南(推荐!)

    MySQL这个数据库是一个客户端-服务器结构的程序,下面这篇文章主要给大家介绍了关于MySQL中库的基本操作指南,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • MYSQL的索引使用注意小结

    MYSQL的索引使用注意小结

    这篇文章主要介绍了MYSQL的索引使用注意,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • 深入理解Mysql中的MVCC

    深入理解Mysql中的MVCC

    这篇文章主要介绍了深入理解Mysql中的MVCC,同样的sql查询语句在一个事务 里多次执行查询结果相同,就算其它事务对数据有修改也不会影响当前事务sql语句的查询结果, 这个隔离性就是靠MVCC机制来保证的,需要的朋友可以参考下
    2023-09-09
  • 你一定用的上的MySQL批量插入技巧分享

    你一定用的上的MySQL批量插入技巧分享

    MySQL一直是我们互联网行业比较常用的数据,我们也常常需要使用半ORM框架进行MySQL大批量插入操作,下面小编为大家整理了一些MySQL批量插入技巧,希望对大家有所帮助
    2024-01-01
  • 浅谈mysql中concat函数,mysql在字段前/后增加字符串

    浅谈mysql中concat函数,mysql在字段前/后增加字符串

    下面小编就为大家带来一篇浅谈mysql中concat函数,mysql在字段前/后增加字符串。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • MySQL占用CPU过高排查过程及可能优化方案

    MySQL占用CPU过高排查过程及可能优化方案

    这篇文章主要介绍了MySQL占用CPU过高排查过程及可能优化方案,具有很好的参考价值,希望对大家的学习或工作有所帮助,感兴趣的朋友可以参考下
    2024-01-01
  • MySQL的join buffer原理

    MySQL的join buffer原理

    这篇文章主要介绍了MySQL的join buffer原理,帮助大家更好的理解和学习使用MySQL数据库,感兴趣的朋友可以了解下
    2021-04-04
  • 为什么MySQL不建议使用SELECT *

    为什么MySQL不建议使用SELECT *

    这篇文章主要介绍了为什么MySQL不建议使用SELECT *,不要使用SELECT *”几乎已经成为了MySQL使用的一条金科玉律,下面文章我们就来看看具体的原因,需要的朋友可以参考一下
    2022-04-04
  • RHEL7.5下mysql 8.0.11安装教程

    RHEL7.5下mysql 8.0.11安装教程

    这篇文章主要为大家详细介绍了RHEL7.5下mysql 8.0.11安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • mysql "too many connections" 错误 之 mysql解决方法

    mysql "too many connections" 错误 之 mysql解决方法

    解决方法是修改/etc/mysql/my.cnf,添加以下一行
    2009-06-06

最新评论