mysql_use_result和mysql_store_result
2016-06-15 17:11
323 查看
同:两者均是连接外部程序处理参数,并返回结果集。
异:从服务器上检索结果集的行,前者只是启动一个逐行的检索,后者从服务器检索结果集的时候就提取了行,并且为之分配内存,存储到客户机中。
操作处理:
mysql_store_result:获取全部数据集保存到本机,因此在随后的mysql_fetch_row()就再也不会返回错误,当返回NULL的时候表示已经到达数据集的末端。
mysql_use_result:本身不检索任何行,而只是启动一个逐行的检索,就是说必须对每一行调用mysql_fetch_row()自己来完成。因此当出现NULL是可能是到达数据集末端,也可能是表示在与服务器通信的时候发生错误,可通过mysql_errno()和
mysql_error()将两者区分开来。
适用:
mysql_store_result:较高的内存和处理需求,因为在客户机上维护整个结果集,所以分配的内存和创建数据结构的耗费是非常巨大的。
mysql_use_result:有着较低的内存需求,每次只需给处理的单行分配足够的内存空间,把较大的内存加载到了服务器上。
注意:
mysql_store_result:获取到结果就与服务器脱离关系,因此可以再查询检索。
mysql_use_result:必须到达末端才能进行再次查询。
因此使用那种检索方式还得根据服务器和客户机来综合考虑。
异:从服务器上检索结果集的行,前者只是启动一个逐行的检索,后者从服务器检索结果集的时候就提取了行,并且为之分配内存,存储到客户机中。
操作处理:
mysql_store_result:获取全部数据集保存到本机,因此在随后的mysql_fetch_row()就再也不会返回错误,当返回NULL的时候表示已经到达数据集的末端。
mysql_use_result:本身不检索任何行,而只是启动一个逐行的检索,就是说必须对每一行调用mysql_fetch_row()自己来完成。因此当出现NULL是可能是到达数据集末端,也可能是表示在与服务器通信的时候发生错误,可通过mysql_errno()和
mysql_error()将两者区分开来。
适用:
mysql_store_result:较高的内存和处理需求,因为在客户机上维护整个结果集,所以分配的内存和创建数据结构的耗费是非常巨大的。
mysql_use_result:有着较低的内存需求,每次只需给处理的单行分配足够的内存空间,把较大的内存加载到了服务器上。
注意:
mysql_store_result:获取到结果就与服务器脱离关系,因此可以再查询检索。
mysql_use_result:必须到达末端才能进行再次查询。
因此使用那种检索方式还得根据服务器和客户机来综合考虑。
相关文章推荐
- MySQL递归查询所有子节点,树形结构查询
- mysql大杂烩
- 使用MyBatis链接MySQL
- mysql服务无法启动
- 关于mysql5.7的160万qps
- MySQL主从同步(复制)的配置
- 关于mysql删除语句的子查询问题
- mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法
- left join 和 right join 和 inner join区别
- MySQL
- mysql 查询表注释/字段注释
- mysql用存储过程写入 一个表A中没有存在在另一个表B的数据
- 通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法
- mysql免安装版常用操作
- Mysql删除重复数据
- MySQL索引基础
- MySQL数据类型char与varchar中数字代表的究竟是字节数还是字符数?
- mysql设置初始密码和更改密码(ZIP文件解压安装)
- MySQL查询执行过程
- mysql事务隔离级别