27.7.7 C API 准备语句

MySQLClient 端/服务器协议提供了预准备语句的使用。此功能使用mysql_stmt_init()初始化函数返回的MYSQL_STMT语句处理程序数据结构。准备执行是多次执行语句的有效方法。该语句首先被解析以准备执行。然后,使用初始化函数返回的语句处理程序,在以后的时间执行一次或多次。

对于多次执行的语句,准备执行比直接执行要快,这主要是因为查询仅被解析了一次。在直接执行的情况下,每次执行查询时都会对其进行解析。准备执行还可以减少网络流量,因为对于准备执行的语句的每次执行,仅需要发送参数的数据。

在某些情况下,准备好的语句可能不会提高性能。为了获得最佳结果,请使用准备好的和未准备好的语句测试您的应用程序,并选择产生最佳性能的方法。

准备好的语句的另一个优点是它使用二进制协议,可以使 Client 端和服务器之间的数据传输更加高效。

有关可用作预准备语句的 SQL 语句的列 table,请参见第 13.5 节“准备好的语句”

检测到已准备好的语句所引用的 table 或视图的元数据更改,并在下一次执行该语句时导致该语句的自动重新准备。有关更多信息,请参见第 8.10.4 节“准备好的语句和存储程序的缓存”