Améliorer la requête db4o LINQ
-
20-09-2019 - |
Question
Je suis 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 à ses 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
s et 10 PersistedCommit
s. La requête prend environ 1,5 secondes - ce qui est dans mon opition beaucoup trop longtemps. Le contructor du Commit
objet enregistre uniquement les deux arguments donnés -. Il n'y a pas Timeloss, ici
Ma question:
Cette requête peut être réécrite pour effectuer une meilleure - ou est-ce un problème de db4o (utilisez une requête SODA à la place)
La solution
S'il vous plaît vérifier si votre NQ est en effet optimisé ( voir ici ). Sinon, votre meilleur pari est de traduire en SODA vous interroger.
Goran