[英]Performance of Spring NamedParameterJdbcTemplate Query is very slow
我正在開發一個需要JDBC調用Oracle數據庫的項目。 我已經設置了UCP池來與SpringJDBC一起工作。 我有一個相當簡單的查詢,我正在執行如下...
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());
只要數組中只有1個id,這一切都很好。 當我添加第二個ID時,查詢需要將近5分鍾才能運行。 如果我采用確切的查詢並在SQLDeveloper中執行它,則需要0.93秒。
我的代碼或配置一定會出現嚴重問題......有沒有人有任何想法?
編輯:
我刪除了Spring NamedParameterJdbcTemplate的使用,並且直接使用了Jdbc,一切看起來都很棒。 NamedParameterJdbcTemplate的做法有何不同?
好吧,我在這種情況下發現了我的直接jdbc解決方案和我的spring-jdbc解決方案之間的區別......看來,正如@Annjawn在下面解釋的那樣,它是一個綁定變量問題而不是spring-jdbc問題。 我的spring-jdbc問題試圖將變量綁定到索引(不存在),從而進行表掃描...
我的直接JDBC解決方案最終只是執行字符串替換並執行,因此沒有表掃描...
以下鏈接解釋了差異。
http://bytes.com/topic/oracle/answers/65559-jdbc-oracle-beware-bind-variables
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.