[pgsql-jp: 31144] Re: MAX関数が遅い。

Ryosuke Hosoi hosoi @ ryo.com
2003年 9月 30日 (火) 17:32:48 JST


細井です

From: Yoshiiro Tsumori <tsumori @ cds.ne.jp>
Subject: [pgsql-jp: 31142] MAX関数が遅い。
Date: Tue, 30 Sep 2003 17:24:16 +0900
Message-ID: <20030930165830.D70D.TSUMORI @ cds.ne.jp>

> IDナンバーをプライマリーキーにしております。MAXで最大のIDナンバー
> を取得する処理なのですが、必ずシーケンシャルスキャンで最大値を見
> 付けておりまして、時間が掛かります。時間が掛かるというのは主観的
> なんですがプライマリーキーなのだし、少なくともインデックスを使っ
> て最大値を探して欲しいと考えています。ちなみに"vacuum"や"vacuum
> analyze"を実行しても、やはりインデックスは使用されませんでした。

インデックスというのは「検索用」ですから、そういう場合は使われないですね

> 何か良い方法などありましたら、よろしくお願い致します。

IDにシーケンスを使用するか、ID管理用のテーブルを使用するのがよいかと
思います。

-- 
 Ryosuke Hosoi / 細井 良祐
 mailto:hosoi @ ryo.com http://www.ryo.com/
 PGP Public Key http://www.ryo.com/ryo/hosoi.ryo.com.asc
 fingerprint = 4F39 61B0 2034 3A5C DFE8  FBCB 7B99 90CF EBE1 A3F3

> 
> onishi=# explain select max(mas_no) from g_master;
> NOTICE:  QUERY PLAN:
> 
> Aggregate  (cost=14737.84..14737.84 rows=1 width=4)
>   ->  Seq Scan on g_master  (cost=0.00..14609.27 rows=51427 width=4)
> 
> RedHat7.3
> PostgreSQL 7.2.1 on i686-pc-linux-gnu, compiled by GCC 2.96
> ※7.3.3でも試してみましたが、やはりシーケンシャルスキャンでした。
> 
> 津守 美弘
> http://www27.cds.ne.jp/~zeos/
> 
> 



pgsql-jp メーリングリストの案内