2012-05-14 4 views
0

응용 프로그램이 SQL Server 데이터베이스에 연결됩니다. 추가 된 열이 nvarchar(max)이고 검색에 포함되어야합니다. 이 DB의 레코드 수는 수천만 개에 불과하며 응용 프로그램을 사용하는 사람은 겨우 몇 백 명에 불과합니다. 전체 텍스트 검색을 탐색하라고 들었는데 필요한가요?nvarchar (max) 필드 검색

+0

내부 검색을 많이한다면 가능성이 있습니다. BigLumpoftext로 모든 행을 찾으십시오. '% X'또는/및 '% XY %'와 유사하거나 '% XYZ %'와 비슷하지 않은 유형 일수록 더 많은 가치를 지니게됩니다. –

답변

5

이것은 5 마일 떨어진 곳에서 일하는 것과 같습니다. 차를 사는 것을 고려해야한다고 들었습니다. 필요한가? 질문에 대한 간단하고 정확한 답을 줄 변수가 너무 많습니다. 예를 들어, 좋은 산책입니까? 대중 교통 이용이 가능합니까? 귀하의 일정은 융통성이 있습니까? 점심 먹으러 멀리 가야합니까, 아니면 일을 마치고 심부름을해야합니까?

일반 검색이 WHERE col LIKE '%foo%' 일 경우 전체 텍스트 검색이 도움이 될 수 있습니다. 그러나 필요한지 여부는이 열의 크기, 검색이 와일드 카드 검색인지, 밀리 초 대 나노초 쿼리인지에 따라 달라집니다. , 동시성의 양, 데이터가 항상 메모리에 있는지, 더 효율적으로 검색 될 수 있는지 여부와 같은 외견상의 것들이 있습니다.

더 좋은 대답은 시도해야한다는 것입니다. LIKE 대신 전체 텍스트 쿼리를 사용하여 데이터 복사본을 테이블에 채우고 전체 텍스트 인덱스를 추가하고 일반적인 작업 부하가 향상되는지 확인합니다. 아마도 가능할 것입니다. 그러나 구장 행 수보다 자세한 내용을 추가하더라도 확실하게 알 수있는 방법은 없습니다.

0

비슷한 상황에서 더 친숙하고 색인 가능한 검색 구조를 만든 다음 라이브 데이터베이스에서보고 데이터베이스로 레코드를 복사하는 배치 작업을 설정했습니다.

필자의 경우 원래 데이터가 nvarchar (최대) 열을 필요로하지 않았으므로 그 문제를 해결할 수있었습니다. 귀하의 마일리지가 다를 수 있습니다. 어쨌든 대답은 "몇 가지 시도해보고 어떤 것이 효과가 있는지"입니다.

관련 문제