사과 , 딸기 , 배 , 바나나 , 오렌지
라는 데이터가 있습니다. 저 데이터를 어떻게 입력을 해야 검색을 최적화 할수 있을까요?
예1)
A => 사과|딸기|배|바나나
B => 딸기|사과|바나나
C => 배|오렌지
| 구분자를 사용하여 입력했을 경우 "배" 를 좋아 하는 사람은 누구인가 라는 쿼리를 작성
할 경우 LIKE '%배%' 를 해야 A , C 라는 결과값이 나오게 됩니다.
LIKE '배%' 를 하게 되면 C 만 나오게 되고 '%배' 의 경우는 아무것도 안나옵니다.
LIKE '%배%' 를 사용할경우 인덱스의 영향을 받지 않아 검색 속도가 오래 걸리게 됩니다.
예2)
A => 사과
A => 딸기
A => 배
A => 바나나
B => 딸기
B => 사과
B => 바나나
C => 배
C => 오렌지
이렇게 다중 row 로 입력을 할 경우 "배" 를 좋아하는 사람은 누구인가 라는 쿼리를 작성
할 경우 = '배'를 사용하여 검색속도는 빠르지만 , "배"또는"사과"를 좋아 하는 사람은 누
구인가 라는 쿼리일 경우 = '배' OR ='사과' 가 됩니다.
제가 묻고자 하는 요점은 평균 테이블 데이터가 1억개 정도 입니다. 1억개가 넘는 테이블
을 상대로 LIKE '%%' 검색과 OR = '' 검색은 속도에 엄청난 영향을 미치게 됩니다.
이 문제점을 해결할수 있는 방법이 없는지가 궁금합니다.
1 , 2 , 4 , 8 의 비트연산으로 할경우 쉽습니다.
사과 = 1 , 딸기 = 2 , 배 = 4 , 바나나 = 8 , 오렌지 = 16
으로 해 사과와 배를 좋아 하면 1+4 = 5 를 입력하여 ' 해당필드 & 5 ' 를 하게 되면 되지
만 아까도 말씀 드렸듯이 데이터가 1억개가 넘어 갑니다. 비트연산의 한계를 넘어 섭니다.
다른 좋으신 의견 있으신분은 말씀좀 해주세요 |