2010-04-25 6 views
0

SQL에서 Transactios 테이블의 CustomerID라고하는 수백만 레코드의 검색을 수행 할 때마다 CustomerID에 대한 인덱스를 추가하려고합니다.SQL에서 어떤 상황에서 테이블의 필드를 색인하거나 동시에 테이블의 두 필드를 인덱싱하려면 어떻게해야합니까?

필드를 기준으로 내부 조인 또는 외부 조인을 수행해야 할 때 필드에 인덱스를 추가하려는 또 다른 상황이 있습니까? 예 : t1.custumerID = t2.customerID의 내부 조인. 그런 다음 두 테이블에서 customerID에 대한 인덱스가없는 경우 두 테이블을 순차적으로 반복해야하기 때문에 O (n^2)를 찾습니다. 두 테이블에서 customerID에 대한 인덱스가 있으면 O ((log n)^2)가되어 훨씬 빠릅니다.

테이블의 필드에 인덱스를 추가하려는 다른 모든 상황이 있습니까?

테이블에 결합 된 2 개의 필드에 대한 색인 추가는 어떻게됩니까? 즉, 두 개의 필드에 대해 하나의 인덱스가 함께 있습니까?

답변

2

ORDER BYWHERE 절에 자주 사용되는 필드는 색인 생성을위한 좋은 후보입니다.

0

두 필드를 항상 선택하거나 하나의 필드를 선택하고 다른 필드를 선택하는 경우 두 필드의 인덱스를 고려할 수 있습니다.

첫 번째 열의 카디널리티가 너무 작아서 비뚤어진 인덱스가 발생할 수있는 경우 복합 인덱스에 두 번째 필드를 포함 할 수도 있습니다. 제한된 (예 : 3 또는 4) 가능한 값이있는 상태 필드의 경우가 많으므로 매우 다양한 값을 가진 필드를 포함합니다. 일반적으로 정렬하는 날짜/시간 필드는보다 실적이 좋은 색인을 생성합니다.

관련 문제