0

我想查找在日期 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')
4

2 回答 2

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';

另外,让我警告一下,我是 Oracle 人,所以请原谅小的语法差异。

于 2012-05-17T17:37:13.583 回答
0

你不能把这整行都删掉吗?

and market not in (select distinct(market) from plan where date_added < '2012-05-17'

这是多余的,因为您已经指定 date_added 是 > 2012-05-17。

于 2012-05-17T17:27:43.107 回答