5

我严重怀疑 mysqli 的多查询是否真的是多查询,因为从 Web 服务器到数据库的总行程仅为 1。

如果我们调用 5 语句多查询,我们必须执行 multi_query() 一次和 next_result() 4 次。

那么,从 Web 服务器到数据库的次数还不是 5 次吗?

此外,mysqli_use_result()每次 mysqli_more_results()调用mysqli_store_result()都需要一次访问数据库?

4

2 回答 2

0

是的。mysqli::multi_query确实在同一个 MySQL 数据包中发送多个查询。

于 2011-07-24T19:09:44.247 回答
0

是的,mysqli:multi_query()确实将 SQL 一次性发送到服务器。此操作是异步的。PHP 不会等待 MySQL 执行完整的 SQL。一旦 mysqli 得到一个结果,控制权就交还给 PHP 脚本,同时 SQL 继续在 MySQL 服务器上执行。

但是,要获得结果,您需要阻止 PHP 脚本并要求 MySQL 提供结果。next_result()这就是为什么如果您希望收到 5 个结果,您需要调用4 次。每个调用都会重新访问服务器以请求结果,这些结果可能已经准备好并等待获取或未获取。

在实践中,您最终可能会访问 MySQL 服务器超过 5 次。值得指出的是,这不会单独提高 PHP 脚本的性能。除非您有充分的理由在 MySQL 服务器上批量执行 SQL,否则不要使用mysqli::multi_query(). 坚持使用准备好的语句。

于 2020-11-05T23:04:09.257 回答