【问题标题】:Prepared Statements and JDBC Drivers准备好的语句和 JDBC 驱动程序
【发布时间】:2010-07-08 08:04:01
【问题描述】:

我有以下关于 Java 中的预处理语句的问题。

  1. 当 SQL 查询没有任何 Where 子句时,使用准备好的语句是否有益?假设一个简单的查询 Select * from tablename;

  2. 据说Prepared Statement编译一次,第二次只替换值。因此它更快,因为可以跳过查询验证和编译步骤。编译后的表单存储在哪里?这个编译后的表单的生命周期是多久?

【问题讨论】:

标签: java jdbc prepared-statement


【解决方案1】:
  1. 当有要传递的参数和要重复执行查询时,PreparedStatement 很有用。如果有一个简单的查询要被触发一次,Statement 会更快。

  2. 缓存发生在数据库服务器上。 DB 服务器具有帮助缓存已编译查询的 API。因此,对于重复执行查询,相同的编译查询将再次运行并提高性能。

【讨论】:

  • 即使是简单的“select * from tablename”也必须编译并计算执行计划。收益可能不是很大。编译后的表格永远不应该重新计算,但执行计划可以,这取决于隐含的表或索引的变化。
  • 第 2 项并不完全正确。应用服务器可能会提供自己的 PreparedStatement 缓存,Weblogic 就是其中之一。
【解决方案2】:
  1. 每次有用户输入或更多输入时使用 PreparedStatement。它将帮助您转义所需的字符,以防止 SQL 注入和查询错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 2013-07-10
    • 2014-04-25
    • 2018-11-12
    • 2015-07-14
    • 2017-11-05
    • 1970-01-01
    相关资源
    最近更新 更多