簡體   English   中英

Spring NamedParameterJdbcTemplate查詢的性能非常慢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM