Bonjour

N'étant pas un pro de requêtes SQL, ni de JDBC, je cherche à optimiser le temps pour l'insertion de requêtes SQL en base.
J'ai une boucle sur un tableau d'entier qui contient des identifiants.

j'ai simplifié mes requêtes pour une meilleure compréhension.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
// boucle sur tous mes ids
for(id : ids)
{
 
  // je récupère un nouvel valeur pour l'insertion dans une table
  String sql_query = "SELECT S_AC_TRACE_LINK.nextval FROM dual";
  String NEXT_VAL = executeSelectQuery(sql_query);
 
 
  // 1ère insertion dans une table
  sql_query = "INSERT INTO AC_TRACE_LINK (DAT_ID_IN, LINK_ID) VALUES (id, NEXT_VAL)"; // j'utilise le id de la boucle et le NEXT_VAL
  executeQuery(sql_query);
 
 
  // 2ème insertion dans une table
  sql_query = "INSERT INTO AC_TRACE_CONF (LINK_ID, CONTEXT_ID) VALUES (NEXT_VAL, 39)"; // j'utilise le NEXT_VAL
  executeQuery(sql_query);
}
 
// executeSelectQuery
public String executeSelectQuery(String sql_query)
{
   // je simplifie
   connection = getConnection();
   statement = connection.createStatement();
   rs = statement.executeQuery(sql_query);
 
   return value;
}
 
// executeQuery
public void executeQuery(String sql_query)
{
   // je simplifie
   connection = getConnection();
   statement = connection.createStatement();
   statement.executeUpdate(sql_query);
}
Actuellement il y a 3 requêtes dans le corps de ma boucle qui, multiplié par le nombre de mes ids, fait énormément de requêtages en base.
Y-a-t-il un moyen d'améliorer cela (du point de vue SQL et/ou du point de vue JDBC) ?
j'ai vu qu'il y avait la méthode addBatch(sql) dans la classe Statement mais je ne pense pas que je puisse l'utiliser dans mon cas mais je peux me tromper.

Merci de votre aide