0

私の問題は、ABC の最大日付と最小日付を取得することです。約 200,000 レコードに対してこれを行う必要があり、これにはさらに時間がかかります。パフォーマンスを向上させる方法

ROW_ID     DATE                  C     value
----------------------------------------------  
1    2012-08-01 00:00:00.0  ABC      87  
2    2012-09-01 00:00:00.0  ABC      87   
3    2012-10-01 00:00:00.0  ABC      87   
4    2012-11-01 00:00:00.0  ABC      87   
5    2012-12-01 00:00:00.0  ABC      87   
6    2013-01-01 00:00:00.0  CBA      87   
7    2013-02-01 00:00:00.0  ABC      87   
8    2013-03-01 00:00:00.0  ABC      87   
4

1 に答える 1

2

次のようなものを使用して、これを簡単に実行できるはずです。

select c,
  min(date) min_date,
  max(date) max_date
from yt
where c='ABC'
group by c;

SQL Fiddle with Demoを参照してください。

編集、このデータを使用して Sybase の別のテーブルを更新しようとしているため、いくつかのオプションがあります。Sybase では UPDATE ステートメントで派生テーブルを使用できないため、一時テーブルを使用して各 c の最小/最大日付を取得し、JOIN を使用して UPDATE でこのテーブルを使用することをお勧めします。

select c,
  min(date) min_date,
  max(date) max_date
into #temp2
from yt
where c='ABC'
group by c;

update t
set t.min_date = t1.min_date,
  t.max_date = t1.max_date
from temp t
inner join #temp2 t1
  on t.c = t1.c;

デモで SQL Fiddle を参照してください

于 2013-05-28T15:16:19.037 に答える