FF002-去重后取Top N,需要几小时那么长时间吗? 几十毫秒行不行?
有人反馈说付费合集的第一篇文章没有试读,不知道讲了啥, 我把题目做了个截图,如下:
另外,此付费合集的计划是每周一篇, 实际速度会比这个快.
下面开始是本篇文章内容:
这个案例我曾经发在朋友圈(2024-03-27), 到目前为止还没有人跟我讨论如何优化.
某mes系统,下面这个SQL执行了13603秒(3.8小时),消耗大量CPU和IO资源,业务不可接受,类似的sql还有多个:
--简化脱敏后的SQL如下:
--业务逻辑:取最大的20个waferid对应的记录(waferid有重复)
select *
from tbl_trace_wafertrace
where waferid in
(
select waferid
from tbl_trace_wafertrace ----17.8亿记录
group by waferid ----字段上有索引, NDV=201,424,896 1个waferid平均对应8.8条记录
order by waferid desc
FETCH NEXT 20 ROWS ONLY
);
<br>
平均返回 20*8.8 条记录