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

クエリを準備するのはサーバーです (そのため、接続が必要です)。準備済みステートメントのパフォーマンスを向上させるには、DB サーバー自体 (インデックスなど) を調整する必要があります。

もう 1 つの方法は、必要な結果のみを取得するクエリを作成することです。

もう 1 つのアイデアは、頻繁に使用することがわかっているデータをクライアント側にキャッシュすることです。これにより、DB に同じデータを何度も照会する必要がなくなります。

于 2012-04-12T15:15:22.627 に答える
1

2 つの提案:

  1. IDフィールドがインデックス化されていることを確認してください。
  2. たとえば を使用して、多くの小さなクエリを 1 つに結合しWHERE ID IN (...)ます。

後者の詳細については、Batching Select Statements in JDBCを参照してください。

于 2012-04-12T15:13:27.793 に答える
0

また、JDBC ドライバーがステートメント キャッシュをサポートしているかどうかを調べることもできます。オラクルの JDBC ドライバーがサポートしていることは知っています。

于 2012-04-12T15:26:13.940 に答える