2013-04-23 3 views
0

내 목표는 접두어와 일치하는 와일드 카드가있는 쿼리보다 X100 배 느리기 때문에 와일드 카드 일치를 시도하는 쿼리를 피하는 것입니다.mysql DB가있는 단어 목록의 접두사

한 단어의 경우 문제가되지 않지만 단어 목록을 쉼표로 구분하면 어떻게됩니까?

와일드 카드가 아닌 접두사 (뒤 따르는 와일드 카드 사용)로 해당 단어를 일치시키는 효율적인 방법이 있습니까?

이 경우 % word %와 (과) 일치하는 패턴을 피할 수있는 방법이 있습니까?

답변

2

목록에 색인이 있다고 가정합니다. 그렇지 않으면 like의 성능이 접두사 일치와 비 접두사 일치보다 100 배 느려져서는 안됩니다. 예, 다소 느립니다. 그러나 대부분의 노력은 페이지에서 데이터를 읽어야합니다.

쉼표로 구분 된 단어 목록이있는 경우 잘못된 데이터 구조입니다. id와 각 단어가있는 새로운 테이블을 도입해야합니다.

데이터를 적절하게 표준화 한 후에는 쿼리에 적절한 관계형 구조를 사용할 수 있으며 표 결합 또는 요소 찾기에 like을 사용하지 않아도됩니다.

+0

맞아, 나는 색인을 사용하고있다. 그리고 당신은 그 해결책으로 다시 맞습니다. 나는 9 분 안에 당신의 대답을 수락 할 것입니다 :) –