【发布时间】:2012-08-23 05:12:02
【问题描述】:
我正在使用 Spring NamedParameterJdbcTemplate 从表中获取一些值。出于某种原因,查询在我的 Java 应用程序中运行速度非常慢,而不是在 SQL Management Studio 上运行相同的查询。我还在分析器中注意到,准备好的语句不会被重用。如果我在我的 JAVA 应用程序中多次运行相同的查询,我会看到正在执行不同的准备好的语句。所以,不确定为什么这些语句没有被重用。 性能是否因为我在查询中使用 IN 子句而变慢?
这是我的示例 java 代码
StringBuilder vQuery = new StringBuilder();
vQuery.append(" SELECT SUM(Qty) FROM vDemand");
vQuery.append(" WHERE ProductID = :ProductID");
vQuery.append(" AND [Date] >= :StartDate AND [Date] <= :EndDate");
vQuery.append(" AND CustomerID IN ( :CustomerID )");
MapSqlParameterSource vNamedParameters = new MapSqlParameterSource();
vNamedParameters.addValue("ProductID", aProductID);
vNamedParameters.addValue("CustomerID", aCustomerlIDs);
vNamedParameters.addValue("StartDate", aDate, Types.TIMESTAMP);
vNamedParameters.addValue("EndDate", aDate, Types.TIMESTAMP);
int vTotalQuantity = this.getNamedParameterJdbcTemplate().queryForInt(vQuery.toString(), vNamedParameters);
return vTotalQuantity;
【问题讨论】:
标签: java spring jdbc jdbctemplate spring-jdbc