하위 문자열 색인을 사용하여 선행 및 후행 와일드카드 질의 최적화
하위 문자열은 *ABC*와 같이 선행 및 후행 와일드카드를 모두 포함하는 문자열입니다. 하위 문자열 조건을 포함하는 질의는 ABC*처럼 와일드카드로 끝나는 문자열에 대한 질의보다 실행 시간이 꽤 길어질 수 있습니다. 표준 데이터베이스 색인은 하위 문자열 조건이 포함된 질의를 효율적으로 실행하지 못합니다.
표준 데이터베이스 색인은 성을 기준으로 항목이 정렬되어 있는 전화번호부와 유사합니다. 정확한 이름을 알고 있거나 성의 처음 몇 글자를 알고 있는 경우에는 특정 항목을 쉽고 빠르게 찾을 수 있습니다. 하지만 성에 포함된 문자열을 검색하는 경우에는 모든 개별 항목을 조회해야 합니다. 이름을 구성하는 전체 문자열의 하위 문자열을 알고 있는 경우 전화번호부와 마찬가지로, 문자열의 첫 글자를 모른다면 표준 데이터베이스 색인이 아무 쓸모가 없습니다.
이러한 유형의 질의를 효율적으로 실행하고 최종 사용자 질의 응답 시간을 개선하기 위해 추가 데이터베이스 스키마 객체를 작성할 수 있습니다. 이러한 추가 데이터베이스 스키마 객체를 하위 문자열 색인이라고 합니다. 하위 문자열 조건을 사용하여 질의되는 각 문자열 속성에 대해 하위 문자열 색인을 작성할 수 있습니다. 하위 문자열 색인을 작성하면 하위 문자열이 포함된 질의의 성능을 개선할 수 있습니다. 기본적으로 이 하위 문자열 색인은 전화번호부의 각 항목을 가져와 각 성의 작은 부분들을 개별 색인 항목으로 저장합니다. 따라서 문자를 몇 개만 제공해도 시스템에서 항목을 효율적으로 찾을 수 있습니다.
하위 문자열 색인을 사용하는 경우
관리자는
TopSQL MBean과 같은 SQL 모니터링 도구를 사용하여 실행 시간이 너무 길거나 시스템 리소스를 지나치게 사용하는 질의를 식별할 수 있습니다. 이러한 질의에 하위 문자열 색인을 사용하면 좋습니다. 예를 들어, 부품 검색이 잦고 사용자가 보통 부품 이름 또는 부품 번호의 하위 문자열을 검색하여 부품을 찾는다고 가정해 보겠습니다. 또는 사용자가 선행 와일드카드가 포함된 쿼리는 다른 검색보다 시간이 훨씬 오래 걸린다는 점을 관리자나 IT 부서에 알려줄 수도 있습니다.
하위 문자열 조건 검색에 일반적으로 포함되는 속성을 식별했으면 하위 문자열 색인을 작성하여 이러한 검색의 효율성을 높일 수 있습니다.
이러한 추가 하위 문자열 색인 스키마 객체에는 시스템 저장 공간이 필요하며 객체 유지 관리에도 시스템 처리 리소스가 필요합니다. 따라서 일부 문자열 속성에는 하위 문자열 색인이 적합하지 않을 수도 있습니다. 추가 시스템 리소스와 최종 사용자 응답 시간 사이에 절충이 필요합니다.
하위 문자열 색인 작성
하위 문자열 색인을 작성하려면 다음 작업을 수행해야 합니다.
사용자에게 전달할 내용
하위 문자열 색인을 사용하는 경우 특정 개수까지의 하위 문자열에 대해 질의가 최적화됩니다. 이 개수는
구성 파일에 지정된
indexLength 특성과
joinLimit 특성을 곱한 값입니다. 예를 들어,
indexLength가 4이고
joinLimit이 3일 경우 지정된 문자 수가 12개 이하일 때 하위 문자열 질의 성능이 가장 최적화됩니다. 최적의 문자 수를 사용자에게 알려 주어야 합니다. 사용자가
indexLength 특성과
joinLimit 특성을 곱한 값보다 많은 문자를 입력하면 질의가 최적화되지 않은 상태로 실행됩니다. 질의 조건에 지정한 문자가 많을수록 결과 세트가 더욱 구체적이게 됩니다. 대체로 검색 조건이 최적의 문자 수를 초과하고 사용자가 쿼리 성능 저하를 보고할 경우에는
indexLength를 늘려야 합니다.