0

두 가지 질문이 있습니다.전체 텍스트 인덱싱 대 %% 및 클러스터 된 인덱스

  1. Integer 유형의 열에서 문자열 값 유형 열 대신 클러스터형 색인을 선택해야하는 경우에는 의미가 있습니다.

왜?

새 행은 내가 맞다 중간

에서 인덱스의 끝에 추가하지만 삽입하지 때문에 INSERT가 처리 될 때마다 페이지의 데이터 재정렬의 원인이됩니다 클러스터 된 인덱스? Integer 유형의 열에 대해 클러스터 된 색인을 선택해야하는 다른 이유는 무엇입니까? 아니면 잘못된 방향으로 움직이고 있습니까?

  1. 내가

    Select Column1 From Table1 Where Column1 Like '%SomeVal%' 
    

나는 이것에 대한 질문에 다음과 같은 한 쿼리를 아래와 같이 %...%를 사용하여 문자열을 검색해야합니다.

  1. 위의 상황에서 %....%을 사용하는 것이 맞습니까?
  2. Column1의 클러스터 된 인덱스를 넣은 다음 %....%
  3. 을 입력 할 수 있습니까? 전체 텍스트 인덱싱을 선택해야합니까? 그렇다면 %...% 이상의 전체 텍스트 인덱싱을 선호해야하는 이유는 무엇입니까?
+5

접두어 '%'는 색인 스캔을 수행합니다. 귀하의 질문은 실제로 의미가 없습니다. 우리에게 당신의 인식 된 해결책을 말하기보다는, 당신이 해결하려고하는 실제 문제를 말해주십시오. –

+0

@mitchwheat - 선생님, 내 쿼리는 술어가 들어 있습니다. 쿼리에서 언급했듯이 – Pankaj

+0

이 도움이되지 않습니다 ..... –

답변

4
  1. 예, SQL 서버 (그리고 일반적으로 컴퓨터는) 더 빨리 텍스트의 목록을 통해보다 숫자의 목록을 통해 찾고에 있습니다. 즉, WHERE ID = 3 WHERE FirstName = 'BOB'레코드를 검색하는 것이 일반적으로 더 빠릅니다. 사용자가 ProductID 또는 ProductName을 저장하도록 선택할 수있는 제품을 클릭 할 때처럼 ProductID가 더 빨리 끌어 당기는 것처럼 시스템이 서로를 추적하도록 조정 된 경우 효과적입니다. 그러나 WHERE 절에있을 유일한 컬럼이 텍스트로 이루어진 경우, 제목으로 항상 영화를 찾는 것처럼 클러스터 된 인덱스를 해당 컬럼에 추가하는 것이 좋습니다. 일반적으로 클러스터 된 인덱스에 정수 ID 필드가 있고 다른 필드에 클러스터되지 않은 인덱스를 넣지 만 실제로 상황에 따라 다릅니다.

  2. FTS는 단어 기반이지만 와일드 카드 (%)는 패턴 기반이므로 "Patricia"의 텍스트 필드를 검색해야하는 경우 FTS가 가장 적합한 선택 일 수 있지만 " Pat % "또는"Pattie "또는"Patricia "를 찾으려면 FTS가 제대로 작동하지 않습니다. 나는 그것이 의미가 있기를 바랍니다. Find StackOverflow 또는 google을 "fts vs like"로 선택하면이 문제에 대해 약간의 논의가 있습니다.