2013-01-06 87 views
7

我正在查看this代碼點火器查詢結果大result_array()結果

我返回多達10,000行的查詢,通常填補了

我目前在做記憶:

$this->db->get()->result_array(); 

有沒有一種辦法並不是所有的數據加載到內存中,並使用某種光標?看起來結果和結果數組都是數組。 (其中一個是其他對象的陣列,另一個是陣列陣列)

+3

您可以使用[分頁](http://ellislab.com/codeigniter/user-guide/libraries/pagination.html)有限制,即'$查詢= $這個 - > DB->得到('mytable',10,20);'。 –

+0

我希望不要分頁,但我想我將來必須爲大型查詢做到這一點。 –

+2

你不能只使用限制條款嗎? –

回答

7

如果您使用的是我個人推薦的Active Record,limit()應該可以實現您正在查找的內容。

$this->db->limit();

這樣也可以使用,稍微容易些,少的代碼行:

$query = $this->db->get('Table_Name', 50); //syntax db->get('Table',limit_val); 
return $query->result(); 

可以返回一個限制與偏移:

$this->db->limit(10, 20); // Second parameter lets you set a result offset 

鏈接獲得更多有關Active Record Query的幫助 http://ellislab.com/codeigniter/user-guide/database/active_record.html#select

2

Mysql偏移量是您正在查找的指針。 你可以用它喜歡:

$this->db->get(tableName,10,20); 

第二個參數,第三個幫助您設置限制和抵消。

Here are more details