MySQL에서 like 연산자는 regexp 연산자 보다 단순하며 인덱스를 이용해 데이터를 조회할 수 있다.
다들아시다 시피 like 연산자는 정규식을 사용하지않고 %
과 _
와일드 카드를 사용해서 특정한 상수 문자열이 있는지 조회하는 연산자이다.
우선 위에서 언급한 2가지의 와일드 카드에 대해 알아보자.
그리고 와일드 카드 문자는 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 연산자를 사용할땐 조심해야된다.