PHP+PostgrSQLについて教えてください。


数万レコードの中からある言葉を含む行を取り出したいのですが

このようにすると一致するレコードが多い場合はメモリが足らないと言ってエラーになります。
$result = pg_query(SELECT data1, data2, data3, FROM table WHERE data1 ~'キーワード'");

かといってこのようにすると一致した総レコード数を知ることができません。
$result = pg_query(SELECT data1, data2, data3, FROM table WHERE title ~'キーワード' LIMIT 20 OFFSET 0");

どの様に書けば一致総数の取得と検索を同時に行えるのでしょうか?

よろしくお願いします。

回答の条件
  • 1人3回まで
  • 登録:2006/05/29 22:30:14
  • 終了:2006/05/30 02:02:44

回答(2件)

id:vector_xenon No.1

vector回答回数113ベストアンサー獲得回数42006/05/30 00:59:15

ポイント30pt

LIMIT x OFFSET x * y

でページャーみたいにして、レコード総数を足し算するのはいかがでしょうか?


free_resultを使って結果を解放しながら処理すれば、メモリオーバーにもならないかと。


結果セットも使うのであれば、配列に全部格納しておいて、総数を取得してからゆっくり処理する感じで。

id:worldtravel

ありがとうございます

初心者の私には理解ができませんでした^^;

2006/05/30 02:00:48
id:hive7134 No.2

hive7134回答回数167ベストアンサー獲得回数162006/05/30 01:20:26

ポイント50pt

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/psql_k07.htm

SELECT count(*) FROM table WHERE ~;

を別途実行するのがすっきりしていていいのではないでしょうか!

id:worldtravel

ありがとうございます

初心者の私には理解ができませんでした^^;

やはりこれが良いのでしょうか?

最初このようにしてみたのですが、2回SELECTを使うのがどうなのかと思いその他の方法を探していました

2006/05/30 02:02:03
  • id:worldtravel
    2への回答の下記の部分は誤りです。
    理解できます。すいません。

    「ありがとうございます
    初心者の私には理解ができませんでした^^;」

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません