programming/MySQL

database like 검색에서 '%x'와 ('x%' 또는 '%x%')의 차이

happy4u 2007. 1. 9. 21:26
아는 사람은 다 알겠지만...

특정 컬럼에 index를 걸어 둔 경우,
'x%'는 index를 이용할 수 있지만, '%x' 또는 '%x%'는 index를 이용할 수 없다.

조금만 생각해 보면 알겠지만, index는 문자의 왼쪽을 기준으로 인덱스를 만들어 두었기 때문이다.
그런데 만약 반드시 '%x'를 구현해야 한다면 어떻게 해야 할까??
요즘 읽는 책에 간단한 방법이 나왔길래 적어본다.

컬럼 하나를 추가해서 문자열을 뒤집어 저정한 후 index를 걸어두는 것이다.

쩝.. 알고보면 간단한데, 이런 생각은 해 본적이 없다.

사람이름을 예로들어...

col1
이하늘
김하늘
이기택
...

에서 '하늘'이라는 이름을 언능 찾고 싶으면, 아래와 같이 이름을 뒤집어 놓은 컬럼을 추가하고

col1        col2
이하늘       늘하기
김하늘       늘하김
이기택       택기이
...


col2에도 index를 걸고,

SELECT * FROM user WHERE col2 like '늘하%'

라고하면 간단히 해결~


사실 이 얘기를 쓰려고 한 것은 아니었는데...

mysql쪽 책을 보다가 mysql에는 rlike라는 구문이 있음을 알게 됐다.
이건 다시 정리해서~~