2014-05-05 59 views
1

Postgres表看起來是這樣的:的最佳使用方法爲總索引查詢

tran_id SERIAL PRIMARY KEY, 
acct_id int NOT NULL, 
tran_type char(2) NOT NULL, 
/* some performance irrelevant fields */ 

唯一的多行查詢的應用程序將運行如下:

SELECT acct_id, COUNT(tran_id) FROM table WHERE tran_type = 'X' GROUP BY acct_id; 

所以我一直只想要拉取具有特定交易類型的賬戶列表並獲取該類型的交易數量。考慮到這一點,什麼是我最好的選擇索引:

  1. acct_idtran_type
  2. 綜合指數tran_type
    1. 和2組合索引上acct_id和指數(3個指標總數)
  3. 別的東西?

回答

1

編號2.但列序列是必不可少的。讓它:

CREATE INDEX tbl_mult_idx ON tbl (tran_type, acct_id) 

而且,這將是更有效地對類型的integer列(或enum),而不是char(2)

並且使用count(*)而不是count(tran_id)如果tran_id定義爲NOT NULL。它快一點。

更多詳細信息在this related answer on dba.SE

0

建立你的號碼2 :)。它只是一個索引 - 將更容易維護,它將完美地爲您提供查詢,甚至更多 - 它根本不會使用表格,只是索引!

下數4可以物化視圖

相關問題