UNION을 사용할 수 있습니다. 예. 이런 식으로 뭔가는해야한다 : 당신은 당신이 내부 MAX를 찾으려는 열에 대한 인덱스가있는 경우 쿼리가 해당 컬럼에 인덱스의 끝을 추구해야으로
SELECT MAX(PartialMax) AS TotalMax
FROM
(SELECT MAX(YourColumn) AS PartialMax FROM FirstTable UNION ALL SELECT MAX(YourColumn) AS PartialMax FROM SecondTable) AS X;
, 당신은 아주 좋은 성능을 가지고 있어야 최대 값을 매우 빠르게 찾는다. 이 열에 인덱스가 없으면 쿼리는 본질적으로 아무 것도 주문하지 않기 때문에 최대 값을 찾기 위해 전체 테이블을 스캔해야합니다.
"엄청난 쿼리"에 대한 우려를 해결하기 위해 몇 가지 세부 정보를 추가했습니다.
"거대한"이 무슨 뜻인지 잘 모르겠습니다. 당신을 위해 UNION을 수행하는 VIEW를 생성 할 수 있습니다; 그런 다음 뷰를 사용하고 쿼리가 아주 작은 것 :
SELECT MAX(YourColumn) FROM YourView;
을하지만 당신의 쿼리의 텍스트의 크기에 맞게 최적화합니다. 왜 그걸 최적화하는 것이 중요하다고 생각하니? VIEW는 유지 보수에 도움이 될 수 있습니다. 파티션을 추가하거나 제거하는 경우보기를 적절히 수정하면됩니다. 그러나 긴 쿼리 텍스트는 실제로 문제가되어서는 안됩니다.
또는 "거대한"으로, 쿼리가 수행 할 I/O 양에 대해 걱정합니까? 각 테이블의 인덱스가 YourColumn
에 있는지 확인하는 것 외에도 각 파티션의 최대 값을 매우 빨리 찾을 수있는 것은 아닙니다.
+1 나는이 답변을 내 것보다 더 좋아합니다. –
답변 해 주셔서 감사합니다. 나는 14 개의 테이블을 가지고 있는데, 엄청난 쿼리 (14 UNION)를 피할 수있는 다른 가능성이 있습니까? – sdespont
나의 늦은 대답에 대해 유감스럽게 생각합니다. "엄청나게"나는 14 개의 테이블에서 노동 조합을 만드는 것이 길고 섹시하지 않은 요청이라고 말하고 싶습니다. 업데이트 해 주셔서 감사합니다. – sdespont