2013-11-22 4 views
0

여러 개의 열이있는 표가 있고 속성 옵션 (일부 열을 필터링)을 사용하여 findAll을 수행하면 결과가 값별로 그룹화되는 것처럼 보입니다 그 열의.Sequelize는 속성을 필터링 할 때 결과를 그룹으로 묶습니다.

로그에서 생성 된 SQL 문을 볼 수 있으며 아무 것도 그룹화하지 않습니다.

어떤 일이 벌어지고 있는지 알 수 있습니까?

편집

findall은 코드를 추가.

나는 중요한 것으로 생각하지 않지만 약속을 위해 Q를 사용하고 있습니다.

답변

1

"그룹화"라고 할 때, 나는 "주문"을 의미한다고 가정합니다. (그룹화는 여러 행을 사용하여 특정 값이 같은 행을 하나의 행으로 모으고, 순서는 모두 동일한 값을 가진 행을 순서대로 정렬하여 해당 열의 동일한 값을 가진 행을 "그룹화"합니다)

"순서"를 사용하지 않으면 postgresql은 발견 된 순서대로 데이터를 반환합니다 가장 효율적입니다. 쿼리에 인덱스의 일부인 열을 참조하는 조건 자 (where 문의 부분)가 포함되어 있으면 인덱스 자체와 동일한 순서로 데이터가 반환 될 가능성이 큽니다.

I.E. 나는 쿼리를 실행하는 경우 :

select * from person 

나는 다음과 같은 순서로 다음과 같은 결과가 나타날 수 있습니다 그들은 단순히 테이블에서 선택하고 있기 때문에 그들은 순서로 반환 될 가능성이있어

ID   FIRST   LAST 
------------ ---------------- ----------------- 
1    John    Zane 
2    Jack    Smith 
3    Aaron   Smith 
4    Darren   Thompson 
5    Dick    Smith 

을 postgresql이 그들을 찾을 수있는 가장 빠른 방법입니다. 삽입 된 순서 일 수 있습니다.

ID   FIRST   LAST 
------------ ---------------- ----------------- 
3    Aaron   Smith 
5    Dick    Smith 
2    Jack    Smith 
: 그것은 내가 위해, 다음과 같은 결과를 얻을 가능성이 매우 높습니다 나는 사람 (성, 이름)에 인덱스가 있다고 가정

select * from person 
where last='Smith' 

: 나는 쿼리를 실행 한 경우 지금

옵티마이 저가 인덱스를 사용하여 데이터를 검색 할 수 있으며 인덱스에 해당 순서로 나열된 행이 있기 때문입니다.

+0

답변을 주셔서 감사합니다. 그러나 그룹화를 말할 때, 그룹화를 의미합니다. 예를 들어, 예를 들어, 내가 "사람의 마지막 선택"을 한 경우 "스미스"가 한 번만 나타납니다. 그것이 그룹화를 의미합니다. – Deleteman

+0

전체 "findall()"통화를 게시 할 수 있습니까? –

+0

Joe, 업데이트 확인 – Deleteman

관련 문제