데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
안녕하세요? 오랜만에 질답 올리네요...
쿼리를 짜고 있는데 Ctrl + 'L'을 누르니깐 쿼리 비용을 계산해주더라구요.
그래서 30초 이상 돌고 있는 쿼리를 확인해보니깐 Sort쪽에서 비용이 87% 들고있어요.
Sort라는게 어떤건지 궁금하구요,,
지금 쿼리가 어떻게 짜여져있냐면
SELECT A
, B
, C
FROM (
SELECT TABLE_A.A AS A
, TABLE_B.B AS B
, '' AS C
FROM TABLE_A
INNER JOIN TABLE_B
GROUP BY TABLE_A.A
, TABLE_B.B
UNION
SELECT TABLE_A.A AS A
, TABLE_B.B AS B
, TABLE_C.C AS C
INNER JOIN TABLE_B
INNER JOIN TABLE_C
GROUP BY TABLE_A.A
, TABLE_B.B
, TABLE_C.C
) A
INNER JOIN TABLE_D
WHERE
A.A = D.A
A.B = D.B
GROUP BY A, B, C
이런 구조로 되어있습니다.
가장 많은 데이터를 가진 테이블이 5만건정도 있는데 SORT문제는 어떻게 해결해야 하는지 궁금합니다.
고수분들 알려주세요~~
자료를 검색하는 방법중 가장 기본이 정렬입니다.
자료가 정렬되어 있다면 자료를 빠르게 찾을 수 있습니다.(이게 인덱스죠.)
Group by를 하기위해서는 정렬이 필요합니다. 같은 값을 찾아야 하니깐요.
group by 해당열로 정렬이 되어 있다면(인덱스가 존재한다면) 정렬은 필요없습니다.
하지만 위의 쿼리는 JOIN을 하므로 단순히 쿼리의 컬럼만 가지고 판단 할 수는 없습니다