인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

우물 밖 개구리님의 프로필 이미지
우물 밖 개구리

작성한 질문수

[백문이불여일타] 데이터 분석을 위한 기초 SQL

WHERE 해커랭크 문제풀이 2

WHERE 해커랭크 문제풀이 2

작성

·

339

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

우물 밖 개구리님의 프로필 이미지
우물 밖 개구리

작성한 질문수

질문하기