2009-09-01 2 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); 

Как вы можете видеть, каждый PersistedCommit содержит Collection<int> под названием FileIDs, которая соединяет его с его PersistedFileInfo с. Я хочу выбрать все предыдущие фиксации определенного fileInfo (который идентифицируется по его пути).

У меня около 800 PersistedFileInfo s и 10 PersistedCommit s. Запрос занимает около 1,5 секунд - это слишком долго. Конструирующий объект Commit -объект сохраняет только два заданных аргумента - так что здесь нет timeloss.

Мой вопрос:
Может ли этот запрос быть переписан для выполнения лучше - или это проблема с db4o (вместо этого используется запрос SODA)?

ответ

2

Проверьте, действительно ли ваш NQ оптимизирован (see here). Если нет, то лучше всего перевести это на запрос SODA.

Goran

Смежные вопросы