2012-01-12 5 views
0

데이터베이스를 쿼리하는 방법에 관계없이 결과가 동일 할 것으로 예상되지만 두 가지 결과가 나타납니다. 쿼리 한 결과, 나는두 개의 서로 다른 쿼리 - 일관성없는 결과를 반환하는 중

처럼 6

WI 등 5

..

을하지만 쿼리를 실행할 때 NY 3

AL을 값 쌍의 목록을 얻고있다 2가 정확한지 아닌지를 테스트 해 봅니다. "NY"로 달리고 달릴 때, 저는 뉴욕에서 완전히 다른 숫자를 얻고 있습니다. 그들은 어떤 주에서도 일치하지 않습니다. 나는 어느 것이 정확한 수인지에 대해 더 이상 확신하지 못한다.

쿼리 1 :

//Edit 
int countTheaters = session.Query<Theaters>() 
         .Count(); 

var TheaterByStateList = session.Query<Theaters>() 
         .Take(countTheaters) 
         .ToList() 
         .GroupBy(x => x.State) 
         .OrderBy(x =>x.Count()) 
         .ToDictionary(x => x.Key, x => x.Count()); 

질의 2 :

int TheaterCountByState = session.Query<Theaters>() 
          .Where(x => x.State== "NY") 
          .Count(); 
+0

관리 도구를 통해 데이터베이스에 쿼리하면 어떻게됩니까? –

+1

ZVenue, 정말 RavenDB에서 무엇을 기대합니까? 당신은 여기에 몇 가지 질문을했고 Poeple은 좋은 대답을주었습니다.하지만 까마귀 웹 사이트, 블로그, 샘플 앱 등에서 쉽게 사용할 수있는 모든 모범 사례를 엄격히 무시하고있는 것처럼 보입니다. 이상한 명명 규칙 (클래스 이름이나 대문자로 된 변수의 경우 복수형)과 아무 관련이 없지만 그룹화를위한 색인을 사용하면 (마지막 질문 참조) 문제가되지 않습니다. Btw. 그것은 당신의 문제를 일으키는 .Take()의 잘못된 사용법입니다. 솔직히 말해서 미안해. –

+1

.Take() thing ->에는 한계가 있으므로, 5000보다 큰 값을 지정하더라도 sever-config에 정의 된 항목 수만 반환합니다. –

답변

1

이유는 .Take()가 RavenDB 서버 구성에서 설정 한 최대 레코드 수만 반환한다는 것입니다. 이는 까마귀들이 디자인 철학을 바탕으로 일찍 실패 (개발 중)하지 않아야하므로 페이징하지 않는 방법 (사람들이 일반적으로 실행하는 것)을 인식하지 못하는 경우 발생할 수있는 많은 고통을 피하는 데 도움이되기 때문입니다. NHibernate 또는 EF2로).

기본적으로 다른 것을 지정하지 않고 128 개의 레코드 만 가져옵니다. 당신은 클라이언트에서 그것을 변경할 수는 있지만 서버에 설정된 숫자보다 더 많은 레코드를 한 번에 가져 오지는 않을 것입니다 (1024라고 생각합니다. 그러나 어쨌든 걱정할 필요는 없습니다. 누군가가이 제한을 변경하고자하는 이유는 없습니다).

2

우리는 스키마를 모르는, 그래서 말하기 어렵다. 하지만 문제는 여기에있다 확신 : 다른 쿼리 예제는 데이터베이스의 모든 행을 계산하면서, 당신은 첫 번째 countTheaters 행에 그룹을 실행 의미

.Take(countTheaters) 

.

+0

죄송합니다. 내 코드를 업데이 트 ... countTheaters는 레코드의 총 수입니다 .. 그래서 두 쿼리는 같은 번호를 다시해야합니다 .. – ZVenue

+0

countTheaters는 열거 형의 개수로 설정되어 있으므로 모두 걸릴해야합니다 (중복 될 수 있음) 코드가 정말로 혼란스럽지 않고 두 번의 호출간에 카운트가 변경되지 않는 한 –

+0

코드에서 명백한 다른 중요한 차이점은 한 버전이 메모리에서 그룹화하는 반면 다른 버전은 데이터베이스에서 "NY"의 인스턴스를 계산한다는 것입니다. 이로 인해 차이가 발생할 수 있습니다 (데이터 정렬 설정/대소 문자 구분)? 다시 말하지만, 데이터에 액세스하지 않고도 말하기가 어렵습니다. – driis

관련 문제