[pgsql-jp: 39050] Re: 1 スキーマあたりの最大テーブル数について

Hiroki Kataoka kataoka @ interwiz.jp
2008年 1月 11日 (金) 00:06:17 JST


片岡です。

higaki shoutarou さんは書きました:
>> もしかして、DB接続→1件INSERT→DB切断 みたいなループになっているとか…
> 
> その通りです。。。

 それはあまりに非効率です。

> ランダムで異なるデータをいれるようにしたいのですが、MySQLみたいに複数insertの構文
> はPostgreSQLではちょっと見つからなかったので。。。。

 普通なら、

BEGIN;
INSERT INTO ...
INSERT INTO ...
INSERT INTO ...
 :
 :
END;

 で十分だと思いますが。ちなみに8.2以降なら複数行INSERTもできます。

INSERT INTO ... VALUES (...), (...), (...), ...

 ただしSQL文の長さはほどほどに。

> 以前、1億件程度のレコードでも問題なくデータをはじき出してくれる。。みたいなメール
> をみたのですが、自分の環境だと80万件程度でもCount(*)で30秒ほどかかってしまいます
> 。HDDのアクセスランプがつきっぱなしなので、HDDアクセスが原因だと思うのですが、何
> か高速化する方法等はあるのでしょうか?

 PostgreSQLでは、COUNTはレコード数を実際に数えなければなりませんので時
間がかかっても仕方のない操作です。よって、できるだけCOUNTを使わないよう
に工夫してください。

-- 
Hiroki Kataoka <kataoka @ interwiz.jp>



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