2011-01-24 3 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 녹화를 포함 ord는 SQL과 동일합니다.
데이터로 저장 다음

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

Event 클래스 : 나는이 코드를 실행하면

Class Event => int Id => string _Data 

결과는 다음과 같습니다
몽고 : 580ms
SQL : 102ms

이 문제를 해결하기 위해 무엇인가해야합니까! mongo가 항상이 테스트를 제외하고 더 빨랐기 때문에!
감사합니다.

+1

MongoDB가 이러한 유형의 간단한 쿼리에 대해 SQL Server보다 빠르다고 생각하는 이유는 무엇입니까? _Data 열에 적절한 인덱스가 있다고 가정하면이 유형의 쿼리에서 모든 관계형 데이터베이스가 빠르게 번개가 날 것입니다. 진지하게 -이 유형의 벤치 마크는 아무것도 증명하지 못합니다. –

+0

재 게시입니까? 또한 어제 귀하의 결과는 "Mongo : 172ms SQL : 185ms." - 같은 질문이 아닌가? 그래서 무엇이 바뀌 었습니까? –

+0

이것은 또 다른 테스트입니다. – Rawhi

답변

5

색인이 필요합니다.

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

관련 문제