[SQL] 데이터 분석을 위한 SQL 기초 공부(3)_feat:데이터리안
∇ LIKE 심화.
- 내가 찾고자 하는 대상이 명확하고, 패턴을 가지고 데이터를 불러오고 싶은게 아니라면,
=으로 대상을 특정해줘도 괜찮습니다.
위의 LIKE를 사용해서 뽑은 데이터와
= 으로 뽑은 데이터는 동일한 것을 확인 할 수 있습니다. 특정 대상이 명확하기 때문입니다.
= 을 사용하는게 연산속도면에서도 훨씬 효율적입니다.
# 와일드 카드 %와 _의 구분
'%'는 위치에 따라서 글자의 갯수를 상관하지 않고, 관련된 데이터를 모두 뽑아오게 되는것이고
반면에 '_'는 사용한 갯수가 곧 글자수로 정확한 글자수에 맞는 데이터를 뽑아오게 됩니다.
++ %나 _를 문자속에 넣고 싶으면 escape [ \ ]를 활용해서 문자로 인식하게 만들 수 있습니다.
# 'LIKE' 연산자의 주의사항.
1. 대소문자 구분.
- 대부분의 SQL DB 시스템에서 'LIKE'연산자는 기본적으로 대소문자를 구분하지 않습니다.
- 단, 특정 DB에서는 대소문자를 구분하도록 설정할 수 있습니다.
2. 성능 문제.
- 'LIKE'연산자는 특히 '%' 와일드카드가 패턴의 시작 부분에 있을 때 인덱스를 사용하지 못해
쿼리 성능의 저하를 일으킬 수 있습니다.
- 큰 데이터셋에서는 주의가 필요합니다.
3. 유니코드 및 다국어 지원.
- 'LIKE' 연산자는 유니코드 문자열을 지원하며, 다국어 문자열 비교에도 사용 가능합니다.
단! DB 설정에 따라 비교 방식이 다를 수 있습니다.
∇ LIKE 심화 설명.
∇ 성능 최적화.
∇ -1 인덱스 사용
1. LIKE 연산자를 사용할 때, 특히 패턴이 접두사(prefix)로 시작하면 인덱스를 사용 가능.
- LIKE abc%는 인덱스를 사용가능해서 빠른 검색이 가능
2. 패턴이 접미사(suffix)로 시작하면 인덱스를 사용할 수 없음.
- - %abc는 테이블의 모든 행을 스캔해야 하므로 성능이 저하된다.
∇ -2 정규 표현식 사용
- 일부 DB에서는 LIKE 대신 정규 표현식을 사용 가능.
- 정규 표현식은 더 복잡한 패턴 매칭을 지원.
∇ -2 캐시 및 파티셔닝
- 빈번한 패턴 검색이 필요한 경우, 결과를 캐싱하거나 테이블을 파티셔닝하여 성능을 향상.