mysql_unbuffered_query
(PHP 4 >= 4.0.6, PHP 5)
mysql_unbuffered_query --  向 MySQL 发送一条 SQL 查询,并不获取和缓存结果的行
说明
resource mysql_unbuffered_query ( string query [, resource link_identifier] )
mysql_unbuffered_query() 向 MySQL 发送一条 SQL 查询 query,但不像 mysql_query() 那样自动获取并缓存结果集。一方面,这在处理很大的结果集时会节省可观的内存。另一方面,可以在获取第一行后立即对结果集进行操作,而不用等到整个 SQL 语句都执行完毕。当使用多个数据库连接时,必须指定可选参数 link_identifier。
注: mysql_unbuffered_query() 的好处是有代价的:在 mysql_unbuffered_query() 返回的结果集之上不能使用 mysql_num_rows() 和 mysql_data_seek()。此外在向 MySQL 发送一条新的 SQL 查询之前,必须提取掉所有未缓存的 SQL 查询所产生的结果行。

mysql_unbuffered_query:unbuffered顾名思义不缓存,意思就是查询结果不缓存。而大多数人用的mysql_query查询结果缓存。

mysql_unbuffered_query的好处:第一是节省内存,第二是它不用等数据获取完全以后操作,直接可以获取一条数据以后就可以操作。它的弊端是mysql_num_rows() 和 mysql_data_seek()对它无效,原因也在于它不缓存数据。下面是一个小例子:

<?php
$link = mysql_connect('localhost','root','root');
mysql_select_db('phpcms');
$sql = "SELECT * FROM `phpcms_content`"; 
//$result = mysql_unbuffered_query($sql,$link);
$result = mysql_query($sql,$link);

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf ("ID: %s Name: %s", $row[0], $row[1]);

}
mysql_data_seek($result,0);
echo "<br/>";
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf ("ID: %s Name: %s", $row[0], $row[1]);
}

    mysql_free_result($result);
?>

如果使用mysql_query,则将结果输出两次。若用mysql_unbuffered_query则只能输出结果一次。


mysql_unbuffered_query查询是一边查询一边给出结果.
mysql_query是查询完所有的在给出结果.
如同页面缓存

自己选择吧,不过速度要求不高的话,还是用mysql_query吧