我有兩張表,我們將它們稱爲email_bounces和master_email_list。在其他表上嵌套查詢的SQL查詢
master_email_list是~3.5m記錄。
email_bounces是〜100,000條記錄。
我試圖做一個查詢,如果電子郵件地址在email_bounces中找到,我在master_email_list中更新反彈= 1。
這是我的。
update 'master_email_list' set bounce=1 where email in (select email FROM 'email_bounces')
除此之外,似乎沒有工作,它會查詢,然後掛起無限期(我離開它運行在一夜之間,跑前約4小時後)。
幫助表示讚賞。
你有'master_email_list.email'上的索引嗎? –
在master_email_list和反彈表中有電子郵件索引嗎? 此外,嘗試更新'master_email_list'set bounce = 1,其中EXISTS(選擇1 FROM'email_bounces'B,其中M.email = B.email)...但您確實需要首先使用這些索引。 –
爲了在MySQL中提高性能,請勿在謂詞中使用子查詢。改爲使用JOIN操作。 – spencer7593