2011-01-24 10 views
3

可能性の重複:
mongoDB run queries just like as SQL !!!SQL ServerとMongoDB:速度テスト?

のMongoDB:

var x = nosql.GetRecords<Event>(p => p._Data == "rawhix", 0, 12222); 
// ICursor<T> GetRecords<T>(expression, skip, limit); 

SQL:

SqlDataReader dr = SqlHelper.ExecuteReader("Select Top(12222)* From NewsFeed WHERE _Data = 'dddd'"); 

MongoDBは1000000 RECが含まれていますordはSQLで同じです。

Id = 1 , _Data = 1abc 
Id = 2 , _Data = 2bc 
... etc 

Eventクラス::次のように保存された
データ

Class Event => int Id => string _Data 

私は、コードを実行すると結果は次のとおりです。
モンゴ:580ms
SQL:102ms

私はこれを解決するために何かをしなければならない!なぜならモンゴはこのテスト以外はいつもより速かったからです!
ありがとうございます

+1

MongoDBがこの種の単純なクエリのためにSQL Serverより速いと思われるのはなぜですか? _Data列に適切なインデックスがあるとすれば、このタイプのクエリではリレーショナルデータベースが素早く落ちるはずです。真剣に - このタイプのベンチマークは何も証明しません。 –

+0

これは再投稿ですか?また、昨日の結果は "Mongo:172ms SQL:185ms"でした。 - これは同じ質問ではありませんか?だから何が変わったの? –

+0

これは別のテストです。 – Rawhi

答えて

5

インデックスが必要です。 Mongoのコンソールでこれを実行します。

db.Events.ensureIndex({_Data:1}); 

か、C#のドライバを介して、それを呼び出すことができます。

MongoDatabase db = server.GetDatabase("your_db_name"); 
MongoCollection<Event> events = hr.GetCollection<Event>("events"); 
employees.EnsureIndex("_Data"); 

それはへの別の呼び出しであるため、あなたはかかわらず、すべての呼び出しでこれを行うにはしたくないだろうDBと非常に小さなパフォーマンスのヒットを持つことになります。

+0

はい、これはmongoコンソールにありますが、C#のドライバはどうですか? – Rawhi

+0

C#ドライバでこれを行う方法が追加されました。データベースごとに一度だけ行う必要がありますので、毎回呼び出さないようにしました。 –

+0

@Rawhi:ensureIndex()の後のあなたの統計はどうでしたか? – Storm

関連する問題