在工作中遇到记录日志的表查询慢问题
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
八百多万条数据
经过对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)
以上为个人经验,希望对您有所帮助。