需要了解其工作原理
我有以下代码
public static void updateOrdersPrepared(int productId , String productName){
Connection con = getConnection();
try {
pstmt = con.prepareStatement
("update Orders set productname = ? where Prod_Id = ?");
pstmt.setInt(2, productId);
pstmt.setString(1, productName);
pstmt.executeUpdate();
pstmt.close();
con.close();
} catch(SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());
}
JOptionPane.showMessageDialog(null,"Data Updated into Orders Table");
}
现在,如果此方法被调用“N”次,准备好的语句的查询计划将被计算“N”次还是仅计算一次?
在这种情况下使用准备好的语句是否有真正的优势?
最佳答案
这取决于您所针对的 RDBMS。
SQL Server 能够缓存语句 "update Orders set productname = ? where Prod_Id = ?"
的参数化查询计划所以会有一个好处。然而,这是一个如此简单的查询,其好处可能会很小。
您应该根据您的特定情况进行测量(您的服务器是 CPU 限制还是 I/O 限制?通常是后者)。
正如你所知。使用PreparedStatement的真正优点是准备一次,然后使用不同的参数集调用多次。
关于java - 如果我们关闭并重新打开准备好的语句,查询计划是否会重新计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9108397/