运行以下效果很好:
SELECT email FROM User WHERE empNum IN (126,513,74)
但是,这需要很长时间才能回复(没有错误)使用:
SELECT email FROM table1 WHERE empNum IN (
SELECT empNum FROM table2 WHERE accomp = 'onhold' GROUP BY empNum
)
这是什么原因造成的?
运行以下效果很好:
SELECT email FROM User WHERE empNum IN (126,513,74)
但是,这需要很长时间才能回复(没有错误)使用:
SELECT email FROM table1 WHERE empNum IN (
SELECT empNum FROM table2 WHERE accomp = 'onhold' GROUP BY empNum
)
这是什么原因造成的?
我认为您需要的 join 语句是:
SELECT email FROM table1
INNER JOIN table2
ON table1.empNum=table2.empNum
AND table2.accomp = 'onhold'
那个怎么样?
SELECT DISTINCT table1.email
FROM table1
INNER JOIN table2 USING(empNum)
WHERE table2.accomp = 'onhold'
table2.accomp
如果您经常使用该查询,您可能应该建立一个索引:
CREATE INDEX accomp ON table2 (accomp);
或许
CREATE INDEX accomp ON table2 (empNum,accomp);
执行一些粗略的(但决定性的)基准:
清除查询缓存(*):
RESET QUERY CACHE;
运行慢查询并记下时间
(*) 您需要相关权限才能运行该命令