|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : mars 2008 Messages : 3 ![]() |
Bonjour,
J'essaye actuellement de charger toutes les données d'un table afin de peupler des listes déroulante. Mais, avec une table qui contient environ 800 entrée, les performances ne sont pas acceptable (entre 20 et 30s par référentiel). Voici une partie du code : CommercialName.hbm.xml Code :
Code :
Quelqu'un aurait-il une idée ? Merci |
||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 238 ![]() |
Ce qui est logique; en rapprochant le graph (qui donc 800 objets * nombre de traductions); ce qui fait la matérialisation de plusieurs miliers d'objets en mémoire, dans une session, donc avec le track changing.
Si il s'agit juste de lier une combo : - une session stateless sera suffisante - il vaut mieux créer un mapping spécifique basé sur SELECT sur une vue en read only D'une façon générale, c'est un contre emploi de matérialiser des objets juste pour initialiser une combo box. Dans ces cas, le datareader de la connection Nhibernate ou la méthode ci-dessus te donnrait plus de satisfaction. Pour comprendre la logique, si tu avais besoin de deux champs dans une table, tu ferais select champ1, champ2 from matable, pas un select sur l'ensemble des données avec le produit cartésien des relations. En revanche, pour 800 objets et vu le graph, 20s me paraissent énormes, as-tu le code ? PS : il se peut que le thread soit subitement envahi de posts qui te diront que l'orm c mal et que le SQL pur c'est mieux, c pas très grave.
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : mars 2008 Messages : 3 ![]() |
Merci pour ta réponse, J'ai du coup fractionner le chargement de l'objet en plusieurs étapes afin qu'il ne me charge pas tout le referentiel et de filtrer ce dont j'ai besoin
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com