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:
Auriez-vous une idee d'une autre maniere de procéder qui serai beaucoup + rapide?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 @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(); }
Merci d'avance.
Partager