そのため、今日、MongoDB クエリが非常に遅く、タイムアウトするというこの問題が発生しました。この質問を投稿しました - MongoDB too many records? 彼の提案は正しかったので、インデックスを確保し、大文字と小文字を区別しないようにする必要がありました。Mongoシェルで試してみましたが、完璧に機能しました。
しかし、PHP 経由で実行したときは、まだ同じでした :( その後、クエリに「id」(_id ではない) フィールドの並べ替えがあることに気付き、それを削除すると、ものすごい速さでした。しかし、並べ替えを使用すると、本当に遅かった. 私はすでに id フィールドにインデックスを持っていました. これはクエリです:
db.tweet_data.find({
... $or:
... [
... { in_reply_to_screen_name: /^kunalnayyar$/, handle: /^kaleycuoco$/, id: { $gt: 0 } },
... { in_reply_to_screen_name: /^kaleycuoco$/, handle: /^kunalnayyar$/, id: { $gt: 0 } }
... ],
... in_reply_to_status_id_str: { $ne: null }
...
... } ).sort({id:-1})explain()
したがって、私のインデックスは次のとおりです:(複合ではありません){ {id:-1} , {handle:1}, {in_reply_to_screen_name:1} }
いくつか読んだ後、それは複合インデックスである必要があることに気付き、2つのバリエーションを試して成功しませんでした:1.2 {handle:1, in_reply_to_screen_name:1, id:-1}
.{id:-1,handle:1, in_reply_to_screen_name:1}
どこが間違っているのかわかりませんが、ここで問題がインデックス化されていることは確かです。私はあまりにも忙しくて、インデックスを作成する順序とフィールドを理解できません