java - 如果我们关闭并重新打开准备好的语句,查询计划是否会重新计算?

标签 java database prepared-statement sql-execution-plan

需要了解其工作原理

我有以下代码

  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/

相关文章:

java - RXTX 的稳定替代品

java - 我可以使用serialVersionUID号找到jsp项目的jdk版本(使用apache ant构建)吗?

java - 如果其字段不可变,则外部同步的 ArrayList 线程安全吗?

mysql - 如何 "inner join"两个网站数据库

database - Docker 容器 IO 性能

php - 使用 PDO 修改准备语句的查询字符串

java - Android 如何从 URI 打开 Deezer

mysql - 如何使用phpmyadmin向mysql数据库中的列添加自动增量?

php - 条件无效的 PDO 准备语句

java - PreparedStatement 如何在 Java 中内部工作 : How compilation & caching of SQL works