我已阅读各种来源(例如this,this或this),了解use_result()
(无缓冲查询)与store_result()
之间的区别(缓冲查询)并且还知道MySQL保持对数据的锁定(在整个表上的MyISAM的情况下),直到所有结果都被发送到客户端。
我不明白为什么使用use_result()
(无缓冲)查询为什么MySQL比store_result()
(缓冲)查询保持锁定的时间更长。为什么使用store_result()
而不是使用use_result()
并且自己进行缓冲(到PHP数组中)呢?
答案 0 :(得分:2)
当使用store_result()
mysql驱动程序(写在低于php的级别)时,会将数据从服务器传输到客户端并释放锁定。
当使用use_result()
并在数组中缓冲时,你需要创建一个php循环,因为php是一个解释器,循环速度较慢,所以每次获取行之间都有一个延迟。
为了看到这个延迟,衡量执行时间的差异
for (i = 0; i < 100000; i++) {}
在php
和c
之间
一般来说,php代码比c代码慢,而php扩展和内部函数都是用c代码编写的,所以使用扩展或内部函数总是比在PHP代码中为同样的东西编写算法更快