我想查找 2012 年 5 月 17 日之后添加到计划表中的新市场。 此选择有效,但对于 16k 记录,性能很慢。 当我删除第二个不同的关键字时,性能大大提高,并且得到相同的结果,但我仍然需要此选择更快。大约需要 25 秒。一定有更快的方法吗?
select distinct(market)
from plan
where date_added > '2012-05-17'
and market not in (select distinct(market) from plan where date_added < '2012-05-17')
最佳答案
不确定这会提高您的性能,但这是另一种方法:
select market
from (select market,
min(date_added) min_date
from plan
group by market) as sub_plan
where sub_plan.min_date > '2012-05-17';
此外,请允许我注意,我是 Oracle 人员,因此请原谅细微的语法差异。
关于mysql 性能与 select not in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10640441/