Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
Tags
- Lv. 2
- 자바스크립트
- DP
- group by
- 프로그래머스
- Python
- LEVEL 2
- Java
- bfs
- javascript
- SQL 고득점 KIT
- 동적계획법
- level 3
- Dynamic Programming
- Baekjoon
- Lv. 1
- SQL
- Lv. 0
- 너비 우선 탐색
- 깊이 우선 탐색
- Lv. 3
- 소프티어
- 티스토리챌린지
- dfs
- 백준
- 파이썬
- programmers
- 오블완
- join
- softeer
Archives
- Today
- Total
몸과 마음이 건전한 SW 개발자
[HackerRank-MSSQL] 해커랭크 basic select Weather Observation Station 7 [성능 최적화-인덱스를 위해서] 본문
SQL/MSSQL
[HackerRank-MSSQL] 해커랭크 basic select Weather Observation Station 7 [성능 최적화-인덱스를 위해서]
스위태니 2026. 4. 17. 11:33문제 링크
https://www.hackerrank.com/challenges/weather-observation-station-7/problem?isFullScreen=true
Weather Observation Station 7 | HackerRank
Query the list of CITY names ending with vowels (a, e, i, o, u) from STATION.
www.hackerrank.com
최적화 코드
SELECT DISTINCT CITY
FROM STATION
WHERE CITY LIKE '%[aeiou]';
아쉬운 코드 (내코드)
select distinct city from station where right(city, 1) in ('a', 'e', 'i', 'o', 'u');
풀이 과정
- 풀이는 간단하다 중복 제거, 뒤에 a e i o u인 도시를 찾게 조건문을 쓰면 된다.

느낀점
- 회사에서 수석님께 sql교육을 받았다.
- 인덱스를 타기 위해서는 가공을 하면 안된다고 하셨다.
- left right substring 등 컬럼 전체를 가공해서 where 에서 비교하는 형태는 인덱스를 타지 않는다.
- 왜냐하면 모든 컬럼을 가공한다 = 모든 컬럼을 조회한다 라는 말이 되고 full scan이 된다.
- 우리가 원하는 것은 index scan이지 full scan이 아니다 그래서 어떻게 최적화가 가능할지 gemini에 물어보니 정규표현식을 가르쳐줬다.
- 수석님 교육에서도 분명 말씀해주셨는데 돌아서면 까먹는다.
- 결론은 정규표현식과 like를 사용해서 인덱스를 타자
- left right 등을 최대한 사용하지 말자.
- 당연히 조건문에서지 select에서 쓰는 것은 상관 없다.
- 예를 들어 000 조건의 도시를 찾고 앞에 3글자만 보여라. 라고 했을 때
- 이미 조건을 통해 찾은 데이터를 가공해서 보여주는 것이기 때문에 이때는 가공해도 무방하다.
- 추가로 정규표현식이나 like를 사용하더라도 앞에 %나 _가 있으면 인덱스를 타지 않는다 ㅋㅋㅋㅋ