NYCPHP Meetup

NYPHP.org

[nycphp-talk] Paging through large result sets

Kayra Otaner kayraotaner at yahoo.com
Thu Aug 29 13:03:47 EDT 2002


I suggest to use 'mysql_unbuffered_query' for large result sets. It really effects performance.
>From the manual :


mysql_unbuffered_query
(PHP 4 >= 4.0.6)

mysql_unbuffered_query --  Send an SQL query to MySQL, without fetching and buffering the result
rows 
Description
resource mysql_unbuffered_query ( string query [, resource link_identifier [, int result_mode]])


mysql_unbuffered_query() sends a SQL query query to MySQL, without fetching and buffering the
result rows automatically, as mysql_query() does. On the one hand, this saves a considerable
amount of memory with SQL queries that produce large result sets. On the other hand, you can start
working on the result set immediately after the first row has been retrieved: you don't have to
wait until the complete SQL query has been performed. When using multiple DB-connects, you have to
specify the optional parameter link_identifier. 

The optional result_mode parameter can be MYSQL_USE_RESULT and MYSQL_STORE_RESULT. It defaults to
MYSQL_USE_RESULT, so the result is not buffered. See also mysql_query() for the counterpart of
this behaviour. 

Note: The benefits of mysql_unbuffered_query() come at a cost: You cannot use mysql_num_rows() on
a result set returned from mysql_unbuffered_query(). You also have to fetch all result rows from
an unbuffered SQL query, before you can send a new SQL query to MySQL. 

Best,

Kayra Otaner

__________________________________________________
Do You Yahoo!?
Yahoo! Finance - Get real-time stock quotes
http://finance.yahoo.com



More information about the talk mailing list