Melhorar a consulta DB4O LINQ
-
20-09-2019 - |
Pergunta
Eu tive um problema com esta consulta 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 );
Como você pode ver, todo PersistedCommit
contém a Collection<int>
chamado FileIDs
que o conecta ao seu PersistedFileInfo
s. Quero selecionar todos os compromissos anteriores de um FileInfo específico (que é identificado por seu caminho).
Eu tenho cerca de 800 PersistedFileInfo
s e 10 PersistedCommit
s. A consulta leva cerca de 1,5 segundos - que está na minha opição por muito tempo. O Contratado do Commit
-Object salva apenas os dois argumentos dados - então não há timeloss aqui.
Minha pergunta:
Essa consulta pode ser reescrita para ter um desempenho melhor - ou é um problema de db4o (use uma consulta de refrigerante)?
Solução
Verifique se o seu NQ é realmente otimizado (Veja aqui). Caso contrário, sua melhor aposta é traduzir isso em uma consulta de refrigerante.
Goran