我有订阅者的数据电子邮件.这是我正在做的事情:
select
email
from
data_list
where
email NOT IN (
select
email_subscribe
from
subscribe
)
Run Code Online (Sandbox Code Playgroud)
这需要很多时间.有关如何改进它的任何建议?
data_list = 50.000电子邮件
订阅表= 1000万封电子邮件
小智 5
一个explain query plan会给你最好的方向.
但是,仅从查询本身判断,您应该检查的第一件事是您在列上有一个索引.data_list.emailsubscribe.email_subscribe
你可以尝试做的另一件事就是把你IN变成一个JOIN.MySQL优化器可能已经为你做了这个,但它有可能将所有1000万行从订阅转为多个OR.
select
d.email
from
data_list d
left join subscribe s
on (d.email=s.email_subscribe)
where
s.email_subscribe is null
Run Code Online (Sandbox Code Playgroud)