Je rencontre des performances négatives sur les requêtes triées.Performance de tri NHibernate
Voici comment la requête est générée et rendue par NHibernate:
SELECT TOP 50 y0_,
y1_
FROM **(SELECT distinct r1_.Id as y0_,
this_.Id as y1_,
ROW_NUMBER()
OVER(ORDER BY this_.Id DESC) as __hibernate_sort_row
FROM Event this_
inner join Registration r1_
on this_.Id = r1_.EventId
WHERE this_.IsDeleted = 0 /* @p2 */
and this_.SportId in (22 /* @p3 */)) as query**
WHERE query.__hibernate_sort_row > 20
ORDER BY query.__hibernate_sort_row;
La partie en gras (dans les ** - symboles) est tous les résultats aller chercher et les met dans l'ordre - c'est ce qui se passe temps. Est-il possible de rendre cette requête plus efficace? Je veux juste faire du tri et de la pagination sans avoir à créer trop de frais généraux. J'utilise NHibernate 2.1. Des améliorations dans les versions futures qui concernent mon problème?
Meilleures salutations, Mattias
Je ne vois rien de spécifique dans la requête que j'appellerais horrible pour la performance, avez-vous exécuté la requête à travers l'optimiseur pour voir s'il vous manque des index? –
C'était un problème d'index. Merci! – Mattias
De rien, je l'afficherai comme réponse alors. –