2017-01-25 13 views
0

私は巨大なデータセット(顧客、タイムスタンプ、消費)を持っています。 私は、さまざまなクエリのパフォーマンスを向上させるために、インデックスを使用する必要があるが、私は、この特定のクエリのパフォーマンスを後押しするすべてのインデックスを作成するように見えることはできません:私が読んでいたものからどのINDEXタイプを使用しますか?

SELECT customer, AVG(consumption) 
FROM alicante_1y 
GROUP BY customer; 

を、そこにありますAVG機能のパフォーマンスを向上させるための簡単で直接的な方法はありません...

前もって感謝します。

出力(冗長、解析)説明:インデックスの

HashAggregate (cost=194302.67..194315.09 rows=993 width=16) (actual time=6847.581..6848.630 rows=994 loops=1) 
Output: customer, avg(consumption) 
Group Key: alicante_1y.customer 
-> Seq Scan on public.alicante_1y (cost=0.00..150840.45 rows=8692445 width=16) (actual time=0.175..1829.867 rows=8692445 loops=1) 
Output: customer, t, consumption 
Planning time: 0.633 ms 
Execution time: 6849.036 ms 
+5

テーブルから**すべての**行を読んでいるので、インデックスは役に立たないでしょう。インデックスは、何らかの条件に基づいて多くの行を数行に減らす必要がある場合に役立ちます。あなたの質問を遅くするものを見つけるには、あなたの質問を編集し、** 'explain(analyze、verbose)' **を使って生成された実行計画を追加する必要があります。 [**フォーマットされたテキスト**](http://stackoverflow.com/help/formatting)、[スクリーンショットなし](http://meta.stackoverflow.com/questions/285551/why-may-i-not -upload-images-of-code-on-so-asking-a-question/285557#285557) –

+0

出力で元の投稿を編集しました。 –

答えて

0

あなたの最高の最高は、被覆指標です。それは:

create index idx_customer_consumption on alicante_1y(customer, consumption); 

です。Postgresは、集約のためにインデックスを使用することもできます。

+1

ベスト?意味、私はそれが最善の策だと思う –

+0

私はすでにそれを試みた。 Postgresはそのインデックスをまったく使用しません。 –

+0

@OrestesPolyzos。 。 。それは本当に面白いです。 I/Oを節約して、索引を索引のカバー索引として少なくとも使用する必要があります。 –

関連する問題