2017-11-10 11 views
0

redshiftテーブルに最大サイズ20,000のvarcharカラムがあります。行の約60%がこの列をヌルまたは空にします。そのような場合のパフォーマンスの影響 ドキュメントthisから私が読んで:データテーブルの サイズへの影響を最小限に抑え、必要なよりもはるかに大きくRedshift:大量のvarcharカラムに空白/空がたくさんあることの短所

アマゾン赤方偏移は非常に効果的に列データを圧縮しているので、 作成の列が。ただし、複雑なクエリの処理中に、 中間クエリ結果をテンポラリの テーブルに格納する必要がある場合があります。テンポラリ・テーブルは圧縮されていないため、不要な大量のカラムである が大きなメモリと一時的なディスク・スペースを消費します。この場合、 は問合せのパフォーマンスに影響します。

この場合、クエリのパフォーマンスが悪い可能性があります。これ以外に他の不利な点はありますか?

+0

実行するクエリにはその列が含まれていますか? (あなたの質問を例で更新してください) –

答えて

1

redshiftテーブルに格納するには、ドキュメントで示唆されているように、データをコンパクトに保つ​​ために圧縮符号化の助けが必要です。

null値で列を照会すると、where句で使用するなど、余分な処理が必要になります。これは、クエリのパフォーマンスに影響する可能性があります。したがって、パフォーマンスはクエリによって異なります。

EDIT - Redshiftは各列を「ブロック」に格納し、これらのブロックは指定したソートキーに従ってソートされます。 Redshiftは各ブロックの最小/最大のレコードを保持し、返されるデータを含むことができなかったブロックをスキップできます。特定の列のディスク容量を照会し、他の列とサイズを確認します。

私が間違った仮定をした場合は、コメントしてください。

+0

私の場合、where句ではこの列は使用されません – ishan3243

+0

この列を使用する他のユースケースは? –

+0

したがって、結合基準としても使用されず、ほとんどがselectステートメントで使用されます – ishan3243

関連する問題