FF002-去重后取Top N,需要几小时那么长时间吗? 几十毫秒行不行?

有人反馈说付费合集的第一篇文章没有试读,不知道讲了啥, 我把题目做了个截图,如下:

FF002-去重后取Top N,需要几小时那么长时间吗? 几十毫秒行不行?-1

另外,此付费合集的计划是每周一篇, 实际速度会比这个快.


下面开始是本篇文章内容:

这个案例我曾经发在朋友圈(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 条记录