Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mysql添加索引和不添加索引区别

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

作者: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 定位看到

经过对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

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

ALTER TABLE xxl_job_log ADD INDEX index_job_time (trigger_time)

在使用explain查看select执行情况

总结

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

您可能感兴趣的文章:
阅读全文