2 votes

Améliorer la requête linq de db4o

J'ai un problème avec cette requête linq :

from PersistedFileInfo fi in m_Database
from PersistedCommit commit in m_Database
where commit.FileIDs.Contains( fi.ID )
where fi.Path == <given path>
select new Commit( m_Storage, commit );

Comme vous pouvez le voir, chaque PersistedCommit contient un Collection<int> appelé FileIDs qui le relie à son PersistedFileInfo s. Je veux sélectionner tous les commits précédents d'un fileInfo spécifique (qui est identifié par son chemin).

J'ai environ 800 PersistedFileInfo et 10 PersistedCommit s. La requête prend environ 1,5 seconde, ce qui est à mon avis beaucoup trop long. Le constructeur de l'objet Commit -L'objet ne sauvegarde que les deux arguments donnés - il n'y a donc pas de perte de temps ici.

Ma question :
Cette requête peut-elle être réécrite pour être plus performante - ou est-ce un problème de db4o (utilisez plutôt une requête SODA) ?

2voto

Goran Points 3996

Veuillez vérifier si votre NQ est effectivement optimisé ( voir ici ). Si ce n'est pas le cas, votre meilleure chance est de traduire vous-même cette requête en SODA.

Goran

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X