Effectivement, c'est une solution mais le problème est plus compliqué.
Je m'explique :
Je travaille sur une application où la table personne va contenir plus de 8 millions d'entrées en 2 ans (la table possède également des clés étrangères).
Nous avons effectué un benchmark qui nous a montré que notre requête initialise est peu performante.
SELECT id, nom, prenom, anneeNaissance FROM personne WHERE anneeNaissance = in (?, ?, ?) AND prenom = ?
Le DBA nous propose de mettre un index sur la colonne dateDeNaissance et d'utiliser la requête ci-dessous : (il connaît peu hibernate. Il exige uniquement que sa requête soit exécutée au niveau du SGBD)
select * from (select * from personne where anneeNaissance in (?, ?, ?)) where prenom = ?
Comment faire pour avoir un tel résultat en passant par l'api Criteria ? (nous ne souhaitons pas tous casser niveau applicatif pour écrire la requête en HQL)
Partager