我正在使用MYSQLI_USE_RESULT
(无缓冲查询),同时从表中查询大量数据。
为了进行测试,我使用了5.6 GB大小的表。
我选择了所有列Select * from test_table
。
如果我没有使用fetch_assoc()
等方法读取任何行,则尝试使用mysqli_free_result()
关闭结果。关闭它需要5到10秒。
有时我会根据可用内存读取所需的行数。然后我打电话给mysqli_free_result()
,与不读取一行相比,它花费的时间更少。
因此,未读行更少,意味着释放结果的时间更少。更多未读行有更多时间释放结果。
据我所知,没有记录在案的功能会消耗时间。
查询时间约为0.0008秒。
是错误还是预期的行为?
对我来说,这种呆滞用MYSQLI_USE_RESULT
击败了整个观点。
MySQL v5.7.21,PHP v7.2.4用于测试。
此功能的别名为mysqli_result::free
-mysqli_result::close
-mysqli_result::free_result
-mysqli_free_result
。