2011-10-20 9 views
1

私は、データベースアクセスのためにCodeIgniterを使ってアプリケーションを開発しています。アプリケーションは次のようなクエリを発行します:$this->db->query("SELECT fields_list FROM table_name"); しかし、このテーブルには何十万ものレコードがあります。CodeIgniterあまりにも多くのメモリを使用するMySQLクエリ - どのようにMySQLのSSCursorを使用できますか?

CodeIgniterは、結果セット全体をメモリにロードしようとします。その結果、スクリプトはメモリの上限に達します。

libmysqlclient APIのSSCursorを使用する方法がありますが、SSCursorを使用したCodeIgniterの例はありません。 CodeIgniterでMySQLのSSCursorを使用する方法はありますか?

+0

ORMの使用を検討しましたか?たぶん教義?このような状況は、CodeIgniterのネイティブdbクラスよりも少し上手く処理されます。 –

+0

提案をありがとう - 私はそれをチェックします – MrD

+1

問題はありません。私はそれ以上CIをインストールしません...私はDoctrineでほとんど常にそれをあらかじめパッケージ化しています。いくつかのプロジェクトでは残念なことかもしれませんが、私の開発はかなりスピードアップしています。ハッピーコーディング! –

答えて

0

forループを実行し、単一のクエリで取得されたレコードの数を制限します。

テーブルの合計レコード数を取得します。それから:

for ($i=0; $i<=COUNT_OF_RECORDS; $i+=1000) { 
    $sql = "SELECT fields_list FROM table_name LIMIT $i,1000"; 
} 
関連する問題