我正在處理一個需要JDBC調用Oracle數據庫的項目。我已經建立了UCP池與SpringJDBC合作。我有我執行類似下面的相當簡單的查詢...Spring NamedParameterJdbcTemplate查詢的性能很慢
SELECT * FROM TABLE WHERE ID IN (:ids)
我的Java代碼來設置此查詢瞭如下所示...
NamedParameterJdbcTemplate template = new NamedParameterJdbcTemplate(datasource);
Map<String,Object> paramMap = new HashMap<String,Object>();
paramMap.put("ids", Arrays.asList(idArray));
List<Result> results = template.query("SELECT * FROM TABLE WHERE ID IN (:ids)",
paramMap, new ResultRowMapper());
這一切都進行罰款只要在陣列中只有一個id。當我添加第二個ID時,查詢需要將近5分鐘才能運行。如果我採用確切的查詢並在SQLDeveloper中執行它,則需要0.093秒。
一些東西一定會嚴重地錯誤與我的代碼或配置......有沒有人有任何想法?
編輯:
我剝出春天是NamedParameterJdbcTemplate的使用,並只用簡單的JDBC去,一切似乎進行巨大。 NamedParameterJdbcTemplate在做什麼不同?
它不是Spring-jdbc vs jdbc,它的任何綁定變量問題。無論是spring-jdbc還是純jdbc,如果在使用jdbc的java程序中都存在綁定變量,那麼文章中關於基於成本的優化程序所說的內容是否屬實。我會更多地考慮你的代碼如何與spring-jdbc一起工作。爲什麼不嘗試使用'template.queryForList()'而不是'template.query()'來查看結果。 – Annjawn 2012-08-08 21:14:15
@Annjawn好點,會更新答案 – theMothaShip 2012-08-08 21:17:23