• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

WHERE 해커랭크 문제풀이 2

22.02.02 02:05 작성 조회수 227

0

안녕하세요. WHERE 해커랭크 문제풀이 2 강의에서 

아래와 같이 코드를 작성했습니다. 

답은 맞다고 나왔지만 속도 측면을 비롯하여 그렇게 좋은 코드는 아닌 것 같아서 아래와 같이 작성하는 것도 맞는 것인지 질문 드립니다.

감사합니다.

--------------------------

SELECT DISTINCT city

FROM station

WHERE city NOT IN (SELECT city FROM station

                   WHERE city LIKE 'A%' 

                    OR city LIKE 'E%'

                    OR city LIKE 'I%'

                    OR city LIKE 'O%'

                    OR city LIKE 'U%'

                    OR city LIKE '%A'

                    OR city LIKE '%E'

                    OR city LIKE '%I'

                    OR city LIKE '%O'

                    OR city LIKE '%U');

답변 1

답변을 작성해보세요.

0

안녕하세요 진님,

벌써 쿼리의 속도까지 고려하고 계시다니 한발 앞서나가고 계시는군요!

문의주신 속도에 대한 내용은 쿼리 작성이라기보다는 성능 튜닝에 가까운 부분이라 엔지니어링에 가까운 영역이에요. 대용량 DB를 가공 할 때에는 공부가 필요한 내용이기는 하지만 개념도 용어도 쉽지 않은 영역이라 정확하게 답변이 어려운 점 양해 부탁드려요.

다만 쿼리 작성의 효율성을 위해서는 아래처럼 정규표현식이라는 기법을 사용해서 작성할 수도 있습니다. 해당 내용은 고급반 과정에서 다루는 내용이라 지금은 참고만 해보시면 좋을 것 같아요.

SELECT DISTINCT(CITY)
FROM STATION 
WHERE CITY REGEXP '^[^aeiou]' 
             AND CITY REGEXP '[^aeiou]$';

 

정규표현식을 작성 해볼 수 있는 사이트

- https://regexr.com/

 

아래 레퍼런스들에는 MySQL 쿼리 실행계획 보는 법, profile로 실제 쿼리 실행 시간 보는 법 등이 정리되어있으니 혹시 속도 관련해서 더 알고싶으시면 참고해보세요.

- https://jellybean.tistory.com/entry/explain?category=950637

- https://philip1994.tistory.com/58