2013-10-02 3 views
1

술어 MyColumn LIKE '%FooBar'과 일치하는 모든 행을 찾고 싶지만 스캔보다는 색인 찾기를 사용하고 싶습니다.SQL Server에서 효율적인 문자열 접미사 검색이 가능합니까?

한 가지 방법은 기본적으로 역전 된 버전의 MyColumn을 만들고 역 분개 된 열의 기존 색인을 사용하여 해당 열에서 역 패턴 (ooF%)을 검색하는 것입니다.

그러나이 역행 열을 수동으로 생성하는 것은 좋지 않습니다. 오라클은 반전 된 키 인덱스를 사용하여 열의 역전 된 버전을 수동으로 구체화 할 필요없이 (테이블의 물리적 컬럼 형태로 또는 인덱스 된 뷰를 생성하여) REVERSE(MyColumn)에서 자동으로 색인을 생성 할 수 있습니다.

SQL Server에서 suffix substring 검색을 효율적으로 수행하는 다른 방법이 있습니까?

+2

[전체 텍스트 검색] (http://technet.microsoft.com/en-us/library/ms142571.aspx) 옵션이 있습니까? – Bridge

+0

@Bridge : 전체 텍스트 검색은이 문제에 도움이되지 않습니다. 자신의 링크에서 : "전체 텍스트 쿼리는 영어 또는 일본어와 같은 특정 언어의 규칙에 따라 단어 및 구를 조작하여 전체 텍스트 인덱스의 텍스트 데이터에 대해 언어 검색을 수행합니다". 당신은 그 단어의 일부를 검색 할 수 없습니다. – TToni

+0

@TToni 단어 및 구문 ('하나 이상의 특정 단어 또는 구문 (단순한 용어)'및 '지정된 텍스트 (접두사 용어)로 시작하는 단어 또는 구문)을 검색 할 수 있지만, 오른쪽 - 접미사가 아님 - [이 관련 질문] (http://stackoverflow.com/questions/2392348/whats-wrong-with-my-fulltext-search-query)을 참조하십시오. – Bridge

답변

2

인덱스가있는 계산 된 필드 또는 역순 필드가있는 인덱스 된 뷰를 사용하면됩니다.

예, 반전 된 입력란이 표시됩니다. 그러나 오라클의 역 색인이 어떻게 작동한다고 생각하십니까?

효율적인 검색을 위해서는 검색 할 구체화 된 데이터 구조가 있어야합니다.

+0

역순으로 된 문자열을 실제 테이블 열로 표시하는 것과 인덱스 내부에이 검색 기술을 숨기는 것 사이에는 명확한 차이가 있습니다.이 문자열 역 분개는 비즈니스 모델과 관련이 없기 때문입니다. 하지만 역순으로 된 문자열 데이터를 명시 적으로 표시하지 않고 효율적인 접미사 검색을 수행 할 수있는 방법이없는 것 같습니다. 그래서 내 질문에 답한 것 같습니다. :-) – someName

관련 문제