2009-09-01 4 views
2

개선 나는이 LINQ 쿼리에 문제가있어 : 당신이 볼 수 있듯이db4o는의 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); 

이 모든 PersistedCommitPersistedFileInfo들에 연결하는 Collection<int>라는 FileIDs이 포함되어 있습니다. 이전에 특정 fileInfo (경로로 식별)의 모든 커밋을 선택하고 싶습니다.

약 800 PersistedFileInfo 및 10 PersistedCommit이 있습니다. 쿼리는 약 1.5 초가 걸립니다. 너무 오래 걸립니다. Commit 개체의 생성자는 주어진 두 개의 인수 만 저장하므로 여기에 timeloss가 없습니다.

내 질문 :
이 쿼리가 더 잘 수행하기 위해 다시 쓸 수 있습니다 - 또는 db4o는 문제 (대신 소다 쿼리를 사용)입니까?

답변

2

NQ가 실제로 최적화되어 있는지 (see here) 확인하십시오. 그렇지 않다면 SODA 쿼리로 직접 번역하는 것이 가장 좋습니다.

고란