簡體   English   中英

PreparedStatement性能調整

[英]PreparedStatement performance tuning

有什么方法可以改善預准備語句的性能? 它涉及許多選擇查詢。 我這樣查詢:

 String query = "SELECT NAME, ADDRESS " 
                + "FROM USERS "
                + "where ID = ? "
                + "group by NAME, ADDRESS";

PreparedStatement pstmt = connection.prepareStatement(query);

for(long id: listIDs){
   pstmt.setLong(1, id);
   ResultSet rs = pstmt.executeQuery();

   ...
}

該數據庫是MySQL。

服務器是准備查詢的(這就是為什么需要連接的原因)。 為了提高准備好的語句的性能,您必須調整數據庫服務器本身(索引等)。

另一種方法是編寫僅獲得所需結果的查詢。

另一個想法是在客戶端緩存您將要使用的大量數據,這樣您就不會一次又一次地在數據庫中查詢相同的數據。

兩個建議:

  1. 確保ID字段已建立索引。
  2. 例如通過使用WHERE ID IN (...)許多小查詢組合為一個。

有關后者的詳細討論,請參見JDBC中的批量選擇語句

您可能還需要調查JDBC驅動程序是否支持語句緩存。 我知道oracle的JDBC驅動程序確實支持。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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