本帖最后由 pig2 于 2018-4-29 10:32 编辑
某系统,设计要求是每日10w交易,压力测试正常通过。
然后上线不到一周,某日突发行情,当天交易100W+,日终批量跑了两小时,显示进度10%…
开发商说超出设计需求太多,没办法…升级硬件也来不及了。
不死心,看代码: [mw_shl_code=bash,true]SELECT col1
FROM tab1
WHERE col2 NOT IN (
SELECT col3
FROM tab2
WHERE …)[/mw_shl_code]
当天的tab1和tab2都是百万级纪录的…
拍案叫绝
改成 [mw_shl_code=bash,true]SELECT col1
FROM tab1
LEFT JOIN tab2 ON col2=col3
WHERE col3 IS NULL
AND balabala[/mw_shl_code]
恢复重跑,一小时收工…
原因:
子查询耗费时间。尽量不用子查询
原文链接
|