2013-11-22 3 views
0

알 수없는 결과 집합을 정렬 가능한 단일 페이지 매김 결과 집합으로 병합하는 가장 좋은 전략은 무엇입니까?알 수없는 결과 집합을 SQL 서버에 병합

배경, 나는 사용자가 N 번 빌드 한 다음 모든 쿼리를 한 번에 제출할 수있는 상당히 복잡한 쿼리를 사용합니다. N 개의 쿼리는 모두 동일한 형식의 결과 집합을 반환하지만 WHERE 절은 크게 다릅니다.

SPROC를 사용하여 입력에 따라 동적 SQL 문을 생성하거나 각 쿼리를 별도로 실행하고 코드에서 처리 할 수 ​​있지만 더 나은 방법이 있어야합니다. 이 문제에 대한 최적의 솔루션이 있습니까?

답변

0

만큼 쿼리 모두 당신 것, 함께, 당신이 할 수있는 단지 노동 조합을 동일한 서식이 결과를 반환하고 결과를 반환하는 쿼리를 알고에 대한 결과 당신이 걱정하는 경우

select col1, col2, col3 from tablea where ... 
union 
select col1, col2, col3 from tablea where ... 
order by col1, col2 

을 정렬하여 순서를 사용할 때 쿼리를 나타내는 추가 열을 추가해야합니다.

생성되는 N 개의 쿼리 크기에 따라 전체 유니온 쿼리의 크기에 문제가있을 수 있습니다. 이 방법으로 많은 쿼리를 결합하려고 할 때 쿼리 크기를 제한하는 JDBC 문제가 발생하여 개별 데이터베이스 호출을 수행하고 Java 코드로 결과를 병합했습니다.

+0

사용자가 요청한 결과 집합의 수에 따라 N을 변경하므로 동적으로 작성하는 것이 좋습니다. – user2532715

+0

쿼리가 사용자 입력을 기반으로하는 경우 선택 사항이 표시되지 않습니다. 동적으로 생성 된 쿼리없이 수행 할 수있는 유일한 방법은 모든 가능한 조합을 미리 열거하고 런타임에 올바른 쿼리를 선택하는 것입니다. – GregA100k