2017-05-11 5 views
0

私はPostgreSQL 9.5を使用しています。私は約20GBのテーブルを持っています。それは、自動増分列であるID列の主キーを持っていますが、タイムスタンプである別の列でクエリを実行しています...タイムスタンプ列に基づいて選択/更新/削除しようとしていますがクエリは非常に遅いです。たとえば、次のようなテーブルを選択します。 `timestamp_column :: date(current_date - INTERVAL '10 DAY '):: date)は15分以上かかります。 どのような種類のインデックスを追加する必要がありますかそれをより速く実行させるために、このテーブル(必要な場合)に?巨大なPostgreSQLのテーブル - 選択、非常に遅い

おかげ

+2

はPostgreSQLの性能タグ内の[情報]リンクを](http://stackoverflow.com/tags/postgresql-performance/info)に従ってください。あなたの質問を編集して、その情報を貼り付けてください。 –

+0

タイムスタンプ列のインデックスを1つ作成しましたか? –

+1

テーブル定義、クエリ、および説明を表示する必要があります。今のところ、where節に型キャストや他のデータ変換を避けるようにアドバイスします(適切な式を持つインデックスがない限り): 'timestamp_column :: date'。 –

答えて

0

あなたの句の式でインデックスを作成することができます

CREATE INDEX ns_event_last_updated_idx ON ns_event (CAST(last_updated AT TIME ZONE 'UTC' AS DATE)); 

しかし、あなたはtimestamp with timezoneを使用していることを心に留めておく、これまでにこのタイプをキャストあなたは望ましくない副作用を取得してみましょうことができます。

はまた、すべてのSQLでキャストを削除します。

select * from ns_event where Last_Updated < (current_date - INTERVAL '25 DAY'); 
+0

助けをありがとう –

+0

あなたはようこそ。私の答えを受け入れたものとしてマークすることを忘れないでください。ありがとう。 –

関連する問題