2016-10-24 13 views
0

このようなMongoDBを使用すると、おそらく問題が発生します。私は860000のドキュメントをコレクションに持ち、500コレクションをこのように持っています。私は3つの列を持って、最初と2番目のフィールドは配列の型は10要素を含み、3番目はcurrentTimeMillisを保持するInt64の型です。 1つのテーブルから1000件のドキュメントをクエリすると、〜2500 msがかかります。しかし、私は2つのフィールドの最初の要素(配列の$スライス演算子を使用して)(互いにお互いに10要素を含む)を取得する同じクエリを実行すると、約2000ミリ秒かかります。これは奇妙に見えます。 MongoDBはリモートホストにあるので、ネットワークからのデータ量は約10倍ですが、ほぼ同じ時間がかかります。何かご意見は?MongoDb javaドライバの投影性能

+0

このフィールドのインデックスはありますか? – tanaydin

+0

はい。時間欄に索引があります。 mongo javaドライバを使用してクエリを実行します。 Java側では、currentTimeMillisのlong型を使用します。 mongoDBではこのフィールドはInt64です。これは索引を使用しないようにすることができますか、私は知らない。これはこの問題の別の問題です。 –

+0

はクエリを説明し、インデックスの使用に関する情報を提供します。 – tanaydin

答えて

0

問題は次のようになります。私がcollection.find(whereQuery)を使用して1000のドキュメントをクエリすると、〜2400msかかる。しかし、私は同じコードを使用して13の文書を照会すると、〜1500msかかる。データは100倍小さいが、時間は半分ではない。私は何かが欠けていますか?

関連する問題