2009-03-12 2 views
0

텍스트 열에 전체 텍스트 인덱스가 있으면 SQL 쿼리를 사용해야합니다. 그렇지 않으면 O (N²) 접근 방식이 LIKE '%word%'으로 저하됩니까?인덱스가있는 경우 전체 텍스트 검색을 사용하는 SQL 쿼리를 작성하는 방법은 무엇입니까?

IF has_full_text_index('mycolumn') 
    select mytable_id from mytable where contains(mycolumn, 'word') 
ELSE 
    select mytable_id from mytable where mycolumn like '%word%' 
ENDIF 

쿼리는 프로그램에 의해 생성됩니다

나는 대답 같은 것을 할 전망이다. 쿼리에는 항상 일치시킬 단어가 하나만 있습니다. 열에 전체 텍스트 인덱스가 있는지 확인하는 테스트는 빠릅니다.

+0

귀하의 질문에 내 생각이 맞지 않는 것 같아요. 그것은 당신의 테이블입니다. 미리 컬럼에 전체 텍스트 인덱스가 있는지 여부를 알아야합니까? –

+0

아니요,하지만이 코드가 필요한 복잡한 환경에 들어가기를 원하지 않았습니다. 가장 간단한 설명은 인덱싱 서비스를 사용하지 않고 일부 사용자가 데이터베이스를 사용하고 소프트웨어가 여전히 작동해야한다는 것입니다. – neves

답변

1

난 당신이 전체 텍스트 카탈로그에 속하는 당신의 테이블의 알 것이다 켄에 동의하는 경향이 있지만, 당신은 당신의 카탈로그에있는 테이블에 대한

sp_help_fulltext_tables {catalogname} 

을 조회 할 수 있습니다. (MSDN을 통해)

+0

데이터베이스에서 전체 텍스트 검색을 사용할 수없는 경우 sp_help_fulltext_tables가 실패합니다. – neves

+0

SELECT fulltextserviceproperty ('IsFulltextInstalled') 은 FullText 실행 여부에 따라 1 또는 0을 반환합니다. –

관련 문제