Bonjour,
En essayant d'optimiser mon appli j'ai mis en place un pooling sur l'interrogation d'une vue. Le but était de traiter un grand nombre de données par petits lots en pensant que ça irait plus vite et prendrait moins de mémoire.
Donc j'ai une requête de sélection (read only) sur une vue.
Quelque soit le nombre d'enregistrement la requête prend à peu près le même temps : 1 à 2s.
Par contre une fois la requête effectuée et le resultset obtenu je fais les resultset.next()... et c'est là que ça devient étrange :
moins il y a de tuple dans mon resultset plus le premier resultset.next est long !?!
exemple : il y a 1511 enregistrements dans ma vue
---------------------------+---------------------+----------------------
nombre d'enregistements.....| durée d'exécution.....| durée d'exécution
demandé parmis les 1511.....| de la requête...........| du 1er resultset.next
---------------------------+---------------------+----------------------
TOUS...............................|.................1031 ms |..................7631 ms
---------------------------+---------------------+----------------------
500.................................|...................711 ms |..................7540 ms
---------------------------+---------------------+----------------------
100.................................|...................601 ms |.................50493 ms
---------------------------+---------------------+----------------------
50...................................|...................611 ms |.................48900 ms
---------------------------+---------------------+----------------------
quelqu'un peut-il m'expliquer cela ?
JAVA 1.4
Base de donnée : SQL Server 2000 (vue sur une base liée : DB2)
Driver : net.sourceforge.jtds.jdbc.Driver
Partager