Bonjour,
J'ai une table qui contient 3 colonnes avec 15 000 enregistrements. Il existe un index sur l'une de ses colonnes (n° de séquence)

Je dois faire un SELECT * FROM MATABLE WHERE TOTO=? (? = 0 ou 1).

Lorsque je parcours rs.next, que je récupère les 3 valeurs pour les mettre dans un bean puis l'ajouter dans une arraylist, cela me prend 580 sec soit 10min pour 15 000 enregistrements !!


Voici le code:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
		Collection results = new ArrayList(8000);
 
		Connection connection = null;
		PreparedStatement statement = null;
		ResultSet rs = null;
		try {
			// Préparation de la requete
			connection = ConnectionUtil.getConnection();
 
			statement = connection.prepareStatement(REQUETE_SELECT, ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
 
			if (manu)
				statement.setString(1, "1");
			else
				statement.setString(1, "0");
 
			rs = statement.executeQuery();
 
			long avant = System.currentTimeMillis();
			logger.info("Avant:" + avant);
 
	         //[GEI] Optimisation test
	         //rs.setFetchSize(1000);
	         //rs.last();
	         //rs.beforeFirst();
	         // [/GEI] Fin de l'optimisation test
 
			// Boucle sur les resultats
			while (rs.next()) {
				TempSprintDTO dto = new TempSprintDTO();
				dto.setId(rs.getInt(1));
				dto.setLigne(rs.getString(2));
				dto.setManu(manu);
 
				results.add(dto);
			}
 
			long apres = System.currentTimeMillis();
			logger.info("Apres:" + apres);
			logger.info("Difference:" + (apres - avant));
		}
		catch (SQLException e) {
			throw e;
		}
		finally {
			if (rs != null)
				rs.close();
			if (statement != null)
				statement.close();
			if (connection != null)
				connection.close();
		}
 
		return results;

J'ai pensé au fetchSize qui est de "10" je crois pas défaut en le forcant à 1000 mais rien n'y fait.
J'utilise le serveur weblogic8 et comme driver odbc le driver weblogic oracle (en 2 phases commit)

Vous avez des idées ?