[pgsql-jp: 36967] Re: libpq の select の仕組みについてお教えください

Morita Kazuro morita @ yuki.ad.jp
2006年 4月 6日 (木) 23:51:01 JST


石田様

森田です。さっそくお答えくださりありがとうございます。

それでは、100万件くらいの対象のデータから乱数で1つを選ぶというような
処理では、無駄なデータ転送が発生しないようにするには、一度 count(*) で
個数を調べておいて、limit 1 offset ? とするのがよいということですね?

> こんにちは。石田@苫小牧市です。
> 
> 06/04/06 に Morita Kazuro<morita @ yuki.ad.jp> さんは書きました:
> > 森田と申します。
> > このメーリングリストにはたいへんお世話になっております。
> >
> > さて、質問したいことは、select 文を libpq で実行した時に、結果の取得
> > (データベースサーバからデータベースのクライアントへのデーター転送)は、
> > どのタイミングで行われるか行われるかを教えていただきたいのです。
> > PQexecの実行時なのか、PQgetvalueなどの結果の取り出し関数を実行したときか
> > あるいはそれ以外か、お教えください。
> 
> PQexec のタイミングです。
> この時に一気にデータ転送が発生するのを避けるには、
> カーソルを使ったり、limit/offset を使うという方法があります。
> 
> >
> > あと、PQclear によって開放されるのはクライアントのメモリのみですか、
> > サーバーもこれによってメモリの開放が発生しますか?
> >
> 
> クライアント側だけです。
> 
> --
> ISHIDA Akio <iakio @ mono-space.net/ishida @ cycleof5th.com>




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