테이블이 6 개 있습니다. 모두 수백만, 수백만 줄의 데이터를 보유 할 수 있습니다. 모든 테이블에는 object_id, changer_id, date_created 열이 있습니다.하나의 쿼리에 같은 열을 가진 여러 테이블에 쿼리를 결합하십시오.
나는 테이블
SELECT object_id
FROM table#
WHERE changer_id=someId
AND date_created > dateA
AND dateCreated < dateB
또는 동급의 Grails의를 모두에 쿼리를 만들 필요가
table#.createQuery().list{
projections{property('object_id')}
eq('changer_id', someId)
ge('dateCreated' dateA)
le('dateCreated', dateB)
}
같은 쿼리가 6 개 모든 테이블에 이루어집니다 다음 결과가 모든 중복은 제거됩니다.
중간에 사용하지 않는 것은 dateB가 항상 존재하지 않을 수 있으므로 생략 될 수 없기 때문입니다.
이 쿼리를 6 개의 테이블을 통해 단일 쿼리로 결합하거나 6 가지 별도의 쿼리보다 빠르게 만드는 다른 방법이 있습니까?
통합 쿼리가이를 수행 할 수 있습니다. https://www.postgresql.org/docs/current/static /queries-union.html - 결국 데이터 소스를 언제든지 직접 할 수 있습니다. – cfrick
@cfrick "항상 데이터 소스 일 수 있습니까?" 나는 몇몇 단어가 빠져 있다고 생각한다. 그리고 노조와 함께, 그것은 여전히 6 개의 다른 질의를 수행 할 것입니다. 결국 6 개의 질의를 수행 할 것입니다. 6 개의 쿼리를 개별적으로 수행하고 조합하는 것보다 더 낳은 것입니까? –
"항상 DS를 주입 할 수 있습니다"; DB가 모든 작업을 수행하고 최소한의 데이터 만 반환하기 때문에 가장 빠를 가능성이 큽니다. 물론 성능은 측정되어야하며화물은 배양되지 않아야합니다. – cfrick