인덱싱을 손상시키지 않고 "like" 및 와일드카드를 사용하여 MySQL 검색 최적화
데이터베이스 최적화 영역에서 다음과 같은 "like" 연산자를 활용하는 쿼리 "SELECT * FROM sometable WHERE somefield LIKE '%value%'"와 같은 선행 와일드카드는 종종 인덱스 활용에 문제를 야기합니다. 이 문서에서는 인덱스 기반 조회의 이점을 유지하면서 이러한 쿼리를 최적화하는 새로운 접근 방식을 살펴봅니다.
접두사 접미사 인덱싱
인덱싱 문제를 해결하는 핵심은 다음에 있습니다. 문자열을 구성 접미사로 분해합니다. 예를 들어 문자열 "value"는 "value", "alue", "lue", "ue" 및 "e"로 구분될 수 있습니다. 이러한 접미사를 데이터베이스에 저장하고 새 열의 인덱스를 활용함으로써 쿼리는 선행 와일드카드의 방해 없이 부분 문자열을 효율적으로 검색할 수 있습니다.
저장소 고려 사항
이 접근 방식의 절충점은 저장 공간에 있습니다. 단어의 접미사를 저장하는 데 필요한 문자 수는 길이에 따라 2차적으로 증가합니다. 그러나 저장 공간이 큰 제약이 아닌 경우 이 방법은 하위 문자열 검색을 최적화하기 위한 강력한 솔루션을 제공합니다.
다음 예를 고려하십시오.
단어 길이 | 저장용량 증가 인수 |
---|---|
3 | 1.5 |
5 | 2.5 |
7 | 3.5 |
12 | 6.0 |
제한 사항 및 고려 사항
완벽한 솔루션은 아니지만 접두사 접미사 인덱싱은 몇 가지 장점을 제공합니다. 이는 단어를 전체와 부분 모두에서 찾을 수 있도록 하여 조각과 전체 문자열 검색을 유연하게 촉진합니다. 또한 필드 값이 순전히 텍스트 기반이 아닌 경우 적합하지 않을 수 있는 전체 텍스트 검색이 필요하지 않습니다.
그러나 복합어나 하이픈으로 연결된 문구를 처리할 때는 균형을 맞추는 것이 중요합니다. 저장 효율성과 복합 엔터티를 유지하는 능력 사이. 하이픈을 제거하거나 복합어를 개별 구성 요소로 분해하면 특정 시나리오에서 무결성이 손상될 수 있습니다.
또한 접미사 배열을 위한 효율적인 저장 기술은 데이터베이스의 맥락에서 여전히 연구되고 있습니다. 그럼에도 불구하고 이 문서에 제시된 접근 방식은 선행 와일드카드를 사용하여 "유사" 쿼리를 최적화하는 실용적인 방법을 제공합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3