美好的一天! 我已经看过其他有关避免子查询/使用JOIN语句的文章,但仍然无法弄清楚为什么我的查询执行9个结果数据的速度如此之慢。但是当结果数据超过数千时,查询仅执行0.7k ms。
我的问题是,如何加快此查询的执行速度,删除/添加哪些内容,还是需要重新构造查询?怎么样?
这是我的查询
docker ps
这是屏幕截图 EXPLAIN result
已更新EXPLAIN result的SS
我已经设置了INDEX:
更改表SELECT a.ts, b.bc, b.rem, c.dept FROM table1 a
INNER JOIN (select doc, max(ID) from table1 Group By doc) d ON d.doc=a.doc AND d.ID=a.ID
INNER JOIN table2 c ON c.u_id=a.u_id
INNER JOIN table3 b ON b.id=a.doc
WHERE c.depart = 'deparment' AND b.end = 0
添加索引max_id(table3
,end
,id
);
更改表bc
添加索引max_id(table1
,ID
,doc
,u_id
,ts
);
更改表rem
添加索引m_id(table1
,doc
);
更改表ID
添加索引user_max(table2
,dept
);
答案 0 :(得分:0)
尝试相关子查询:
SELECT a.ts, b.bc, b.rem, c.dept
FROM table1 a INNER JOIN
table2 c
ON c.u_id = a.u_id INNER JOIN
table3 b
ON b.id =a.doc
WHERE c.depart = 'deparment' AND b.end = 0 AND
d.id = (SELECT MAX(t1.id) FROM table1 t1 WHERE t1.doc = a.doc);
对于相关子查询,您需要在table1(doc, id)
上建立索引。