起因:
生产的工单系统的mysql 数据库CPU 100%。由于是周边系统使用虚机,数据量也很小。
show processlist;看到很多进程在sending data;
开始分析SQL
sql:如下(这已经截取慢的这一层,实际还要复杂很多,表明已其他字符代替):
执行直接40+秒
SELECT a.ASSIGNEE_, b.GROUP_ID_, COUNT(a.ASSIGNEE_) AS total
FROM fadfdsf a, fdadfd b
WHERE b.TASK_ID_ = a.ID_
AND b.GROUP_ID_ = '12'
AND a.ASSIGNEE_ IS NOT NULL
AND a.START_TIME_ >= date'2019-03-20'
AND a.PROC_DEF_ID_ = 'xxxxx
AND NOT EXISTS
(SELECT 1
FROM fdsafs
WHERE processInstanceId = a.PROC_INST_ID_
AND taskId = a.ID_
)
GROUP BY a.ASSIGNEE_, b.GROUP_ID_
开始发现start_time上没有索引,首先在