2016-07-04 14 views
2

これらのフィールドには、タイムスタンプ、イベント名、イベント値、これらのフィールドを持つ500mレコードの毎日の赤方偏移テーブルがあります。Redshift - 列の値に基づいてテーブルを分割する

「X」という名前のすべてのイベントを取得し、別のレッドシフトテーブルに入れるクエリが必要です。

私たちが単純なinsert into... select * where eventname=xを実行すると、パフォーマンスは恐ろしい(30分実行)。

どうすればいいですか?

+0

は、あなたが持っていますeventnameに – lordkain

+1

上のインデックスがあります元のテーブルと宛先テーブルに割り当てられたDISTKEYとSORTKEY?両方のテーブルで同じ値ですか? (それはノード間でのデータのコピーを避けるのに役立つかもしれません)500mのレコードのうち、「X」という値を持つのはどれくらいですか?完全な 'INSERT INTO ... SELECT *'( 'WHERE'なし)を実行すると、より速く実行されますか? –

答えて

0

元の表のデータをS3にロードし、S3から新しい表にコピーすると、パフォーマンスが向上することがあります。 UNLOAD経由 S3へ

コピーhttp://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html):

unload ('select * from t1 where eventname = x') to 's3://bucket/t' credentials '' gzip; 

コピー S3からCOPY経由(http://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html):

copy t2 from 's3://bucket/t' credentials '' gzip; 
関連する問題