LIKE 키워드의 인덱스 사용

Ilyoung Hwang·2023년 6월 29일
0

MySQL에서 like 연산자는 regexp 연산자 보다 단순하며 인덱스를 이용해 데이터를 조회할 수 있다.

다들아시다 시피 like 연산자는 정규식을 사용하지않고 %_ 와일드 카드를 사용해서 특정한 상수 문자열이 있는지 조회하는 연산자이다.

우선 위에서 언급한 2가지의 와일드 카드에 대해 알아보자.

  • % : 0 또는 1개 이상의 모든 문자에 일치하는가? (문자의 내용과 관계 없이)
  • _ : 정확히 1개의 문자에 일치하는가? (문자의 내용과 관계없이)

그리고 와일드 카드 문자는 1개 이상을 입력해서 사용기 가능하다. 예를들어 _a_,%a% 이런 식으로 가능하다.

아래는 like 연산자와 2가지 와일드 카드를 사용한 쿼리 예제다.

SELECT ‘abcdef’ LIKE ‘abc%’
+———————-+
|      1 |
+———————-+

SELECT ‘abcdef’ LIKE ‘%abc’
+———————-+
|      1 |
+———————-+

SELECT ‘abcdef’ LIKE ‘ab_’
+———————-+
|      1 |
+———————-+

SELECT ‘abcdef’ LIKE ‘_abc’
+———————-+
|      1 |
+———————-+

여기서 중요한 부분이 있는데 와일드 카드 문자인 %, _ 이 두개가 조회할 문자열 앞에 있다면 인덱스레인지 스캔이 아닌 인덱스 풀스캔방식으로 처리가 되어 성능면에서 좋지 않다. 그래서 항상 like 연산자를 사용할땐 조심해야된다.

refer : https://www.yes24.com/Product/Goods/103415767

0개의 댓글