0

有什么方法可以提高准备好的语句的性能吗?这是关于许多选择查询。我这样查询:

 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。

4

3 回答 3

2

它是准备查询的服务器(这就是您需要连接的原因)。为了提高准备好的语句的性能,您必须调整数据库服务器本身(索引等)。

另一种方法是编写只得到你想要的结果的查询。

另一个想法是在客户端缓存你知道你会经常使用的数据,这样你就不会一次又一次地在数据库中查询相同的数据。

于 2012-04-12T15:15:22.627 回答
1

两个建议:

  1. 确保该ID字段已编入索引。
  2. 将许多小查询合并为一个,例如使用WHERE ID IN (...).

有关后者的更详细讨论,请参阅JDBC 中的批处理选择语句

于 2012-04-12T15:13:27.793 回答
0

您可能还想调查您的 JDBC 驱动程序是否支持语句缓存。我知道 oracle 的 JDBC 驱动程序确实支持。

于 2012-04-12T15:26:13.940 回答