出産前後の痔にはご注意!

JDBC(mysql-connector-java-3.1.8-bin.jarを使用)にて、MySQLからデータを取得するプログラム中で、どうしても解決できない問題がありご質問させて頂きました。
初心者で申し訳ございませんがご教授お願い致します。

上記のJDBCを使ってデータ数20万件程のテーブルから

select * from test_table where id>100 order by id asc limit 0,500

のような感じでデータ取得を行うと、limitが500件までに設定しているにもかかわらず、whereでの条件に適合するデータが多いと(例えばwhere id>1)クエリの実行に非常に時間がかかり、結局OutOfMemoryで止まってしまいます。OutOfMemoryで止まるということは返ってくるデータが大きすぎるのかとも思いましたが、LIMITで制限しているし、何故か分からず困り果てております。
私が仕組みを理解していないだけなのかもしれませんが、宜しければご教授頂けませんでしょうか?宜しくお願いいたします。

A 回答 (1件)

単純計算(1レコードあたりのバイト数×500)するとデータ量はどのくらいなんですか?


Limit句を使っても500件のデータが大きければOutOfMemoryになりますよ。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。それが、同様のデータから同様のクエリーでStatementのsetMaxRowsで500をセットするとOutOfMemoryは起きないのですが、私はどこか仕様を勘違いしているのかと心配になっています。

お礼日時:2006/02/06 23:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング