2009-08-12 7 views
0

Je dois obtenir les produits du système qui correspondent à certains critères.HQL vs Linq aux objets

Comment devrais-je décider si je devrais écrire un HQL et obtenir tous les produits qui correspondent aux critères de DB ou écrire une requête Linq directement à la liste principale qui contient tous les produits dans le système.

Ce qui devrait être mieux la performance étau

Répondre

6

Une requête NHibernate serait mieux parce que la filtration des objets se passerait-il dans la base de données. En utilisant LINQ to Objects, vous retourneriez probablement des objets de la base de données que vous ne voulez pas vraiment.

Toujours filtrer les résultats dans la base de données si vous le pouvez - cela vous donnera les meilleures performances possibles (toutes choses égales par ailleurs).

+1

"Toujours filtrer les ensembles de résultats dans la base de données si vous le pouvez" n'est pas nécessairement vrai pour de très petits ensembles de résultats. –

+3

@Pavel - Avez-vous des preuves pour sauvegarder votre déclaration? Je serais intéressé de voir un exemple complet dans lequel il était plus rapide de récupérer tous les objets d'une base de données relationnelle et de filtrer ces objets en mémoire plutôt que d'utiliser une requête bien écrite sur une base de données correctement indexée. –

+1

À noter, vous pouvez utiliser LINQ pour filtrer les éléments de la base de données sans recourir à des objets. –

Questions connexes