我想找到2012-05-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')
答案 0 :(得分:3)
不确定这会改善您的表现,但这是另一种方法:
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';
另外,让我告诫我是一个甲骨文家伙,所以请原谅小的语法差异。
答案 1 :(得分:0)
你不能忽略这一行吗?
and market not in (select distinct(market) from plan where date_added < '2012-05-17'
这是多余的,因为您已指定date_added为&gt; 2012-05-17