BrownBear
113
2017-09-14 09:50:13
5
1145

DB색인 타(?)는 조건 질문드립니다.


DB 색인 공부하다가 DB 색인 검색시 조건에 따라 색인에 맞는게 있고 아닌게 있다는걸 알게되었습니다.


한가지 의문이 드는 조건이 LIKE 절에서의 색인방법인데 가령

SELECT
...
FROM
...
WHERE
proname LIKE "%우유%"
;

위와 같은 쿼리문에서 Like절에서 %우유% 가 아닌 우유%가 맞다고 하시더라고


이렇게 검색을 하면 우유 관련된 색인은 정확도가 더 떨어지는거 아닌가요?

가령 우유 앞에 브랜드명이 붙는 경우(서울우유, 삼양우유, 매일우유)는 검색이 안되어 정확도가 더 떨어지는게 아닌가요?

이부분이 이해가 잘 안가서... 조언 부탁드립니다.

0
0
  • 답변 5

  • fx
    1k
    2017-09-14 10:04:20

    정확도는 떨어지지만 성능은 좋아집니다. 사실 정확도가 떨어진다는 말도 좀 틀렸습니다.


    %우유%  는 우유가 포함되어 있는 조건

    우유% 는 우유로 시작하는 조건


    으로 서로 조건이 다르지 정확도가 차이나는 것은 아닙니다. 물론 전자는 후자를 모두 포함합니다.


    %우유% 는 색인을 이용할 수가 없습니다. 전체를 뒤져보아야 합니다.


    1
  • BrownBear
    113
    2017-09-14 10:20:41

    %우유% 는 색인을 이용할 수가 없습니다. 전체를 뒤져보아야 합니다.
    를 좀 자세히 말씀해주실 수 있나요?
    이해가 잘 안가네요 ㅜ

    0
  • fx
    1k
    2017-09-14 10:26:32

    사전에서 우유를 찾으려고 합니다.     이경우 'ㅇ'  범주에서 순서대로 따라가다보면 쉽게 우유를

    찾을 수 있습니다. 


    사전에서 우유로 시작하는 단어들을 찾으려고 합니다.    이 경우에는 먼저 우유를 찾고 우유로 시작하는 단어들을 계속 찾아가면 됩니다. 우육 이 나올때까지


    사전에서 우유가 들어간 단어들을 서울우유, 삼양우유 등을 찾으려고 합니다.  어떤  우유들이 있는지는

    사전의 단어을 모두 확인해 봐야 합니다.


    1
  • BrownBear
    113
    2017-09-14 10:42:02

    아! 감사합니다. 제가 그 생각을 못했었네요;;; 

    0
  • 협군
    6k
    2017-09-14 10:44:30

    LIKE %keyword% 는 색인을 타지 않습니다. 끝


    애초에 이런 검색을 색인을 타게 하려면 형태소 분석이나 색인어 추출등으로 인덱스 테이블을 별도로 만들어서 검색엔진 급의 구현이 필요합니다.

    그런걸 직접 구현하기 어려우면 엘라스틱서치 등을 도입하는거 아니겠어요?

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.