0

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

+1

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? –

+0

C'était un problème d'index. Merci! – Mattias

+0

De rien, je l'afficherai comme réponse alors. –

Répondre

0

Exécutez la requête par le conseiller de réglage de base de données, très probablement il y a un index manquant (ou mauvais).

Questions connexes