アカウントdocが1つあります。この文書は〜1k席あります。各座席について、私たちは文書を発行する。当然、これは遅いと期待しています。 map関数は次のように実行します:Couchdbスーパースロービュー、100%CPU使用
function(doc) {
if (doc.type == 'account') {
doc.seats.map(function(seat) {
emit(seat.userID, doc))
}
}
}
しかし削除doc.seatsを、その後、はるかに小さいドキュメントを助けていないようでした発光します。
function(doc) {
if (doc.type == 'account') {
doc.seats.map(function(seat) {
delete doc.seats
emit(seat.userID, doc))
}
}
}
なぜ座席を削除してもこれがスピードアップしないのですか?私たちがそれをスピードアップできる唯一の方法は、docオブジェクトを放出せず、idを発行することでした。
function(doc) {
if (doc.type == 'account') {
doc.seats.map(function(seat) {
emit(seat.userID, doc.id))
}
}
}
これは、ソファのビューマップでドキュメントの配列をループする際に問題がありますか?
元のdocは、データに関して99%の座席配列です。だから、もし私がその配列からマイナスの配列を出したら、それはブーストを与えるべきではないのですか? - 実際、私のコードを振り返ってみると、おそらく私が期待していたように、削除はおそらく動作しません。map()メソッド – Elliot
ああ、私はdocが不変だと信じています。私の更新を参照してください。 – sarwar