私たちはゲームでmongo dbをリアルタイムデータベースとして使用することに決めましたが、検索結果のパフォーマンスは受け入れられません。これらは15,000文書と17フィールド(文字列、int、float)のテスト結果ですUnity GameのMongoDBパフォーマンスの問題
// 14000 ms
MongoUrl url = new MongoUrl("url-adress");
MongoClient client = new MongoClient(url);
var server = client.GetServer();
var db = server.GetDatabase("myDatabase");
var collection = db.GetCollection<PlayerFields>("Player");
var ranks = collection.FindAll().AsQueryable().OrderByDescending(p=>p.Score).ToList().FindIndex(FindPlayer).Count();
これは最悪です。 // ToList()はテストのためのものです。実動コードでは使用しないでください。
セカンドテスト
//9000 ms
var ranks = collection.FindAll().AsQueryable().Where(p=>p.Score < PlayerInfos.Score).Count();
第三に、テスト
//2000 ms
var qq = Query. GT("Kupa", player.Score);
var ranks = collection.Find(qq).Where(pa=>(pa.Win + pa.Lose + pa.Draw) != 0);
C#.NET 2.0とモンゴで高速な検索を行うための他の方法はあります。私たちは、ユーザーの得点に応じてプレーヤーのランクを得てランク付けしたいと考えています。
私はDBについてこの部分に熟練していませんが、この情報を提供するAPIを使用していますか?したがって、ページを呼び出すだけで、サーバーがそのページを取得します。 – matiaslauriti
コレクションインデックスを提供できますか?問題の診断に役立つことがあります – justcompile
ObjectIdフィールドである1つのインデックスのみ。 –