작성
·
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