2017-04-11 1 views
-1

봐 조인 수행 방법 : 두 테이블 worldUsersVertica의 또는 다른 SQL 서버 수행이가 내 옆에 Vertica의 쿼리에서

WITH groupA AS (
    SELECT 
     userId, 
     color 
    FROM worldUsers 
    WHERE DayPartition = 409 
      AND Hour = 12 
) 
SELECT 
    color = 12 AS      userColor, 
    REGEXP_LIKE(familyName, '[a-z]+ish', 'i') ishPeople, 
    REGEXP_LIKE(familyName, '[a-z]+lem', 'i') lemPeople, 
    count(*)       AS      peopleCount, 
    round(count(*)/sum(count(*)) 
    OVER(), 5.0) * 100 || '%'  AS      peoplePercentage 

FROM PlanetUsers 
    JOIN groupA USING (userId) 
WHERE DayPartition = 409 
GROUP BY 1, 2, 3 
ORDER BY 4 DESC 

및 필드 Hour을 가지고 그들은 모두 DayPartition 필드로 분할 PlanetUsers합니다. 그것은

USING (userId) 
에서 using 문을

을 우리가

WHERE DayPartition = 409 and AND Hour = 12 

WHERE DayPartition = 409 

에서 아래 쿼리

의 경우 문을 변경하면 성능을 향상 또는 변경됩니다

USING (userId, Hour) 

DayPartition의 파티션을 제외하고 어떤 기본 키 및 파티션 만 CTE의 초기 추출에 사용되는 돌기가

답변

0

이 없음을 가정합니다. CTE를 가지고 있기 때문에 CTE를 없애고 두 테이블을 모두 조인 키로 정렬해야합니다 (조인 할 경우 해시 또는 병합으로 지정).

파티션이 파티션 정리를 적용하고 쿼리에 사용 된 ROS의 양을 제한합니다.

따라서 두 테이블 모두 (userid, hour)로 정렬해야합니다.

초기 SQL의 맨 위에서 설명을 실행하고, 거기에 stas가 있는지 확인하고, 조회를 변경하고 설명을 다시보십시오.

여기에 귀하의 계획을 게시 해 드리겠습니다.

관련 문제