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/30 02:02:44
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:vector_xenon No.1

回答回数113ベストアンサー獲得回数4

ポイント30pt

LIMIT x OFFSET x * y

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


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


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

id:worldtravel

ありがとうございます

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

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

回答回数167ベストアンサー獲得回数16

ポイント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への回答の下記の部分は誤りです。
    理解できます。すいません。

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

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

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

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

回答リクエストを送信したユーザーはいません