我使用jdbctemplate.queryForList(String sql, Object... args)
方法从teradata中获取结果。有时我发现这种方法比在teradata studio上运行相同的查询需要更多的时间。是因为在Web服务端编译sql?
预准备语句如何编译sql语句以及传递给它的参数&编译需要多长时间?
提前致谢。
答案 0 :(得分:0)
根据doc:
14
派生自PreparedStatement
。如果您想多次执行Statement
个对象,通常会缩短执行时间以使用Statement
对象。
PreparedStatement
对象的主要特征是,与PreparedStatement
对象不同,它在创建时会被赋予一个SQL语句。这样做的好处是,在大多数情况下,此SQL语句会立即发送到DBMS,并在其中进行编译。因此,Statement
对象不仅包含SQL语句,还包含已预编译的SQL语句。这意味着当执行PreparedStatement
时,DBMS可以只运行PreparedStatement
SQL语句而无需先编译它。
如果您想查看PreparedStatement
界面,请在日食中选择PreparedStatement
,然后按F3
编辑:
响应@Kayaman,运行PreparedStatement
和PreparedStatement
之间没有区别,影响编译时间的因素很多,取决于环境或查询,如果是大量查询或小一。你真的需要仔细看看它为什么需要额外的几秒钟。