Bonjour, voici mon souci.
Je veux avoir acces aux données d'une TABLE A qui n'a pas de clé primaire (car elle a été faite il y a longtemps).
Pour obtenir une clé unique de la TABLE A, je concatene 9 champs de la table (ce qui me donne un String).
Et dans mon code j'ai une variable:
List<String> listKey
qui contient l'ensemble des cles unique, et que je souhaite récupérer une liste: List<MonObject> listMonObject
correspondant au cle unique de la variable listKey.
Or la TABLE A contient + de 500 000 lignes et ca prend 2 jours au moins
Voici ma methode dans mon dao:
Code :
- @SuppressWarnings("unchecked" )
- public List<MonObject> listByConcatIdProperty(final List<String> propertyList) {
- final String request = String.format(" from %s"
- + " as monObject where (monObject .id.property1 ||'.'|| monObject .id.property2 ||'.'|| "
- + "monObject .id.property3 ||'.'|| monObject .id.property4 ||'.'|| monObject .id.property5 ||'.'|| "
- + "monObject .id.property6 ||'.'|| monObject .id.property7 ||'.'|| monObject .id.property8 ||'.'|| "
- + "monObject .id.cdevcot ||'.'|| monObject .id.property9) in (:propertyList)", getReferenceClass()
- .getName());
- final Query query = this.getCacheableQuery(request);
- query.setParameterList("propertyList", propertyList);
- return query.list();
- }
|
Auriez-vous une idee d'une autre maniere de procéder qui serai beaucoup + rapide?
Merci d'avance.