数万レコードの中からある言葉を含む行を取り出したいのですが
このようにすると一致するレコードが多い場合はメモリが足らないと言ってエラーになります。
$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");
どの様に書けば一致総数の取得と検索を同時に行えるのでしょうか?
よろしくお願いします。
LIMIT x OFFSET x * y
でページャーみたいにして、レコード総数を足し算するのはいかがでしょうか?
free_resultを使って結果を解放しながら処理すれば、メモリオーバーにもならないかと。
結果セットも使うのであれば、配列に全部格納しておいて、総数を取得してからゆっくり処理する感じで。
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/psql_k07.htm
SELECT count(*) FROM table WHERE ~;
を別途実行するのがすっきりしていていいのではないでしょうか!
ありがとうございます
初心者の私には理解ができませんでした^^;
やはりこれが良いのでしょうか?
最初このようにしてみたのですが、2回SELECTを使うのがどうなのかと思いその他の方法を探していました
ありがとうございます
初心者の私には理解ができませんでした^^;