在 Java 中,我们通过 JDBC 访问 MySQL (v5.5.40)——一个准备语句,设置参数然后调用存储过程。似乎每个 execute() 在实际 SP 调用之前都有 4 个元调用(每个 MySQL 查询日志)的开销:
SELECT name, type, comment FROM mysql.proc WHERE name like...
SHOW FUNCTION STATUS LIKE 'sp_one'
SHOW PROCEDURE STATUS LIKE 'sp_one'
SHOW CREATE PROCEDURE `db-name`.`sp_one`
CALL sp_one()
Run Code Online (Sandbox Code Playgroud)
这是服务器端的预期行为吗?只是看起来效率不高。
以下是我们如何使用 API 的示例:
conn = DriverManager.getConnection(..);
stmt = conn.prepareCall("{call sp_one(?,?)}");
stmt.setString(1, "a");
stmt.setString(2, "b");
stmt.execute();
Run Code Online (Sandbox Code Playgroud)
请注意以下情况是正确的:
谢谢!