0

MongoDB データストアと JDO 実装を備えた最新の安定した DataNucleus (3.0.1) があります。コレクションには約 100 万のドキュメントがあります。「id」フィールドは索引付けされています。このコードの実行には数分かかります。

Query q = pm.newQuery(CellMeasurement.class);
q.setOrdering("id descending");
q.setRange(0, count);
Collection<CellMeasurement> result = (Collection<CellMeasurement>)q.execute();

q.setOrdering(...)すべてを削除しても問題ありませんcount=1000。ロードに約 1 秒かかります。

DN がメモリ内の並べ替えを行っているように見えますが、意味はありますか? MongoDB 自体は、このインデックス付きフィールドによって即座に注文します。API は注文をサポートしています。

何か案が ?ありがとう。

4

1 に答える 1

0

ログを調べると (任意のアプリケーションについて) 明らかに多くのことがわかります。この場合、実際に実行されるクエリ。この場合、データストア内で実行するために現在順序付けが実装されていないことが簡単にわかります。

当然のことながら、最初のリリースからオープン ソースになっているコードベースには、誰でも貢献できます。org.datanucleus.store.mongodb.query.QueryToMongoDBMapper メソッド「compileOrdering」は、それを実装する必要がある場所であり、完了したら JIRA 課題にパッチを添付します。どうも

于 2013-01-11T18:28:15.607 に答える