度量快速开发平台-专业、快速的软件定制快开平台

标题: 关于not in 效率问题以及替换方式介绍 [打印本页]

作者: 王爱东    时间: 2020-4-8 11:54
标题: 关于not in 效率问题以及替换方式介绍
最近在清理一些数据的时候,发现一个SQL存在效率问题。
sa_mail_draft是主邮件表,sa_mail是邮件接收人明细信息,之间用sa_mail.mail_id 与 sa_mail_draft.id关联。
sa_mail_draft.id 是一对多 sa_mail.mail_id。







   delete from SA_MAIL where mail_id not in (select id from sa_mail_draft);

  如果数据量大,比如上万,几十万条数据,上面这条语句执行很慢,我们知道,一般不推荐使用not in语法。

因此尝试用左链接试试:

delete from sa_mail where mail_id in (select tablename.mail_id from (select sa_mail.mail_id,sa_mail_draft.id  from SA_MAIL left join sa_mail_draft on SA_MAIL.mail_ID=sa_mail_draft.ID )  tablename where tablename.id is null )


虽然语句看起复杂很多,但是效率确搞很多倍。








作者: 万望    时间: 2020-4-10 19:15
多谢楼主的实际操作,感谢党,感谢人民,感谢毛主席
作者: 万望    时间: 2020-4-10 19:16





欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://bbs.delit.cn/) Powered by Discuz! X3.2