[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 メーリングリストの案内