2

この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が含まれています。特定のfileInfo(パスで識別される)の以前のすべてのコミットを選択したい。Collection<int>FileIDsPersistedFileInfo

私は約800PersistedFileInfo秒と10PersistedCommit秒を持っています。クエリには約1.5秒かかります。これは私の意見では長すぎます。Commit-objectのコンストラクターは、指定された2つの引数のみを保存するため、ここではタイムロスはありません。

私の質問:
このクエリを書き直してパフォーマンスを向上させることはできますか?それともdb4oの問題ですか(代わりにSODAクエリを使用してください)?

4

1 に答える 1

2

NQ が実際に最適化されているかどうかを確認してください (こちらを参照)。そうでない場合は、これを自分で SODA クエリに変換することをお勧めします。

ゴラン

于 2009-10-13T10:50:59.270 に答える