选择不在的mysql性能

时间:2012-05-17 17:21:51

标签: mysql performance

我想找到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')

2 个答案:

答案 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