hayj***
2021-07-24

SQL 쿼리도 컴퓨터 언어이다 보니까 매번 비슷한 말을 하게 되는 것처럼 거~의 비슷한 함수들과 비슷한 형태로 쿼리문을 작성하게 된다.
상황에 맞는 함수를 알거나 다른 형태로 쿼리문을 작성하면 간단해질 수 있는 것을 팔만대장경 급으로 길고 쿼리를 작성한 나조차도 가끔 못알아볼 수준으로 짜게 될때가 있었다.
장황하게 쿼리를 작성해도 결과가 잘 나오면 문제가 없는데 꼭 이렇게 질질 길어진 쿼리에서는 하나둘씩 오류가 생기더라.
그럴때마다 구글하고 사이좋게.. stackoverflow에 전적으로 의지하며.. 해결해왔었다.
해결 못하면 어쩔 수 없이 미로같은 내 쿼리속을 여행하는 수 밖에..
항상 기본에서 튜닝 단계로 넘어가는 그 과정이 어렵고 도움이 목말랐던 나는 그래서 이번달에 받게 될 책에 대해서 굉장한 기대가 있었다.
회사에서는 Hive를 사용하고 있긴 하지만 이번 기회에 MariaDB에 대해서도 맛보기도 할겸 신나있었다.
책에 있는 MariaDB에 대한 설명과 오라클의 비교를 보니 Hive와 문법적으로 큰 차이가 있진 않아보였고 Hive에서 실행하다가 오류가 나거나 문제가 생기면 그때가서 구글의 힘을 빌리면 되겠다라는 생각이 들었다.
그리고 MariaDB의 점유율이 Hive보다 높다는 점에서 내가 정말 좁은 식견을 가지고 있구나 라고 생각했다.
주변에서 거의 Hive만 사용하고 나도 Hive를 사용하고 있다보니 자연스럽게 다른 DB에 대해서 알고자 노력하지도 않았다.
또 갑작스럽게 느끼는 건데.. 컴퓨터 언어와 프로그램들이 정말 많이 다양해지고 있다는 걸 새삼스럽지만 다시한번 깨달았다.
당장은 회사에서 쓰는 툴을 사용할 수 밖에 없지만 기회가 될때마다 책을 통해서나 유튜브를 통해서나 끊임없이 도전해야겠다고 다짐했다.
도태되지말자.
최근에 다른 팀에 제공할 Dashboard를 작성하기 위해 테이블을 짜면서 정말 다양한 우여곡절을 겪었다.
left outer join만 있다면 그 어떤 테이블이라도 쉽게 가져다 붙일 수 있을거라고 생각했는데, 역시나 자만이었다.
이론과 상상만으로는 역시 현실의 문제를 커버할 수 없었다.
회사 데이터라서 자세한 설명은 어렵지만(..) 가볍게 이야기 해보자면 개체에 맞는 각각의 테이블을 특정 값에 대해 join하고 그 안에서 또 집계를 해야하는 상황이었다.
문제는 개체의 수가 엄청나게 많았고 테이블의 특정 값에 대해 join을 하는게 난해한 상황이었다.
한참을 고민하다가 UNION ALL로 여러개의 쿼리문을 처리했다.
다른 방법도 있는지 궁금하기도 했고 UNION과 UNION ALL의 차이에 대해서도 긴가민가 했었는데 이 책에서 마침 그부분에 대해 설명하고 있었다.
UNION ALL은 select문을 실행하는 결과를 단순히 밑으로 붙이는 것이고 UNION은 select문 실행 결과를 밑으로 붙인 다음 중복 데이터를 제거하는 작업까지 포함한다고 한다.
따라서 중복 데이터 제거 작업이 필요없는 나와같은 상황에서는 UNION ALL이 맞다.
어쩌다보니 제대로 작업했다고 확인받은 기분이라 칭찬받은 것 같기도 했다.
그 외에도 방심하면 쉽게 만들어 낼 법한 나쁜 쿼리문에 대해서도 지적하고 있었다.
한번 싹 훑으면서도 에이 설마 내가 이렇게 했을까 싶긴 한데 월요일에 출근하자마자 쿼리나 뜯어봐야겠다.
두근두근 떨린다^ ^;;
간만에 칭찬도 받고 새로운 숙제도 받은 기분이라 즐거운 시간을 보냈다.
기존에 SQL을 많이 사용하는데 점점 심화된 기술을 사용해야하거나 효율적인 쿼리문을 짜야하는 상황이라면 한번쯤은 읽어보는 것을 추천한다.