http://bbs.chinaunix.net/viewthread.php?tid=958067

解决方案 »

  1.   

    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 查询所产生的结果行。 
      

  2.   

    1、mysql_query自动缓存结果集,mysql_unbuffered_query()不是(从字面上不难看出)
    2、对返回结果集排序先后问题
    mysql_query是把所有符合条件的结果集取完了后,再排序
    mysql_unbuffered_query是取出第一条以后就开始排序
    很明显,两个各有优势,对于大的数据集来说mysql_unbuffered_query非常节约内存,但是对于小的数据集及普通的应用还是mysql_query比较实用
      

  3.   

    具体的LZ可以看PHPchina的英文手册下面 有很多人提问和简单
    简单的来讲:
    mysql_unbuffered_query和mysql_query的区别是什么?
    $result=mysql_unbuffered_query($sql);
    mysql一边查询数据库 一旦匹配一条结果 就返还一行 存在内存里面 接着继续查找,返还
    这个时候你可以利用这个结果(单行做其他处理)$result=mysql_query($sql);
    mysql会处理完所有匹配 然后返还一个结果集给PHP(或者其他脚本)处理工作机制如何?各自的长处在哪里?比如说你有1亿行数据 要匹配,而你只想查到一个匹配数据 就OK,那么你就可以用mysql_unbuffered_query,查到一个数据,就可以马上处理,然后用mysql_free_result释放资源。而mysql_query必须匹配所有的数据才返回数据集供你继续操作另外MYSQL手册里面提到一个很重要的信息,就是你用mysql_unbuffered_query 返回一条数据后,再用mysql_free_result释放资源,MYSQL还是要继续查询省下的操作,也就是返回所有的数据,然后在释放资源
    所以我觉得mysql_unbuffered_query的优点更主要在及时反应,不需要等待,当数据量少或者你需要查询的东西少的时候而mysql_query则在需要查询匹配大量的数据集时候 比较有优势。