2

データフォルダーを削除した後、新しい RavenDB サーバーを開始しました。だから、私は空のDBを持っています。このクエリを LinqPad で実行しました。1 回目は 19 秒、2 回目は 13 秒かかりました。空のデータベースでこれに時間がかかるのはなぜですか?

Session.Query<PerformanceMetric>()
.Where(x => x.CreatedTime > new DateTime(2012, 4, 17, 15, 00, 00))
.OrderBy(x => x.ObjectType)
.OrderBy(x => x.CreatedTime)
.Take(1000)
.ToList().Dump();

注: クエリを実行した 3 回目と 4 回目は、わずか 0.02 秒しかかかりませんでした。インデックスか何かを構築していましたか?

4

2 に答える 2

3

私の最善の推測は、インデックスの構築に時間がかかったということです。事前にインデックスを作成しない場合でも、RavenDB ではランダムなクエリを実行できます。インデックスを作成するだけで、十分に使用すれば保持されます。

事前にインデックスを作成してみて、それがどのように機能するかを確認してください。

詳細については、http: //ayende.com/blog/4667/ravens-dynamic-queriesをご覧ください。

于 2012-04-17T20:42:33.610 に答える
3

時間がかかる理由は、クエリを実行するためのインデックスを作成する必要があるためです (インデックスがまだ作成されていない場合)。ドキュメントがなくても、準備のためにいくつかの作業を行う必要があります。特に、インデックスのコンパイルは通常、最もコストのかかる部分です。

于 2012-04-18T01:09:05.287 に答える