누락된 인덱스 기능 사용의 제한 사항
누락된 인덱스 기능의 제한 사항은 다음과 같습니다.
- 인덱싱 구성을 미세 조정하지 않습니다.
- 500개 이상 누락된 인덱스 그룹에 대한 통계를 수집할 수 없습니다.
- 인덱스에 사용할 열의 순서를 지정하지 않습니다.
- 같지 않음 조건자만 포함하는 쿼리의 경우 덜 정확한 비용 정보가 반환됩니다.
- 일부 쿼리에 대해 포괄 열만 보고하므로 인덱스 키 열을 수동으로 선택해야 합니다.
- 인덱스가 누락되었을 수 있는 열에 대한 원시 정보만 반환됩니다.
- XML 실행 계획에 여러 번 나타나는 하나의 누락된 인덱스 그룹에 대해 서로 다른 비용이 반환될 수 있습니다.
다음 섹션에서는 이러한 제한 사항에 대해 자세히 설명합니다.
인덱싱 구성 미세 조정
누락된 인덱스 기능은 누락된 인덱스를 찾는 경량 도구로, 쿼리 성능 향상에 큰 도움이 됩니다. 인덱싱 구성을 미세 조정하기 위한 정보는 제공하지 않습니다. 이 용도에는 데이터베이스 엔진 튜닝 관리자를 사용하십시오. 데이터베이스 엔진 튜닝 관리자에 대한 자세한 내용은 물리적 데이터베이스 디자인 튜닝 및 관련된 쿼리 튜닝 기능을 참조하십시오.
누락된 인덱스 그룹의 최대 개수
최대 500개의 누락된 인덱스 그룹에 대한 통계가 수집됩니다. 이 임계값에 도달하면 누락된 인덱스 그룹 데이터가 더 이상 수집되지 않습니다. 이 임계값은 튜닝 가능한 매개 변수가 아니므로 변경할 수 없습니다.
인덱스 열 순서
누락된 인덱스 기능은 인덱스를 제안할 때 최적 정렬 순서를 고려하지 않습니다. 다음 예제 쿼리를 살펴 보십시오.
SELECT column_a, column_b
FROM table_1
WHERE column_a < 10000
AND column_b < 10000
ORDER BY column_b, column_a
누락된 인덱스 기능은 인덱스를 제안하고 column_a 뒤에 column_b를 나열할 수 있지만 유용한 정렬 순서는 쿼리 정렬 순서와 일치하는 column_b, column_a입니다. 누락된 인덱스를 구현하는 DDL(데이터 정의 언어) 문을 만들 때 개별 작업 쿼리를 검사하여 최적 정렬 순서를 선택하십시오. 누락된 인덱스 기능에서 받은 출력을 기반으로 CREATE INDEX 문의 열을 정렬하는 방법은 누락된 인덱스 정보를 사용하여 CREATE INDEX 문 작성을 참조하십시오.
같지 않음 조건자만 포함하는 쿼리
누락된 인덱스 기능은 단순 모델을 사용하여 같지 않음 조건자만 포함하는 쿼리의 비용 정보를 생성합니다. 따라서 이러한 쿼리에 대해 반환되는 비용 정보는 같음 조건자를 포함하는 쿼리에 대해 반환되는 정보보다 덜 정확할 수 있습니다. 같음 조건자를 포함하지 않는 다음 예제 쿼리를 살펴 보십시오.
SELECT *
FROM table_1
WHERE column_a > -1
AND column_b > -1
이 예제 쿼리에는 같지 않음 조건자(WHERE column_a > -1 AND column_b > -1
)만 포함되어 있습니다. table_1의 모든 행은 column_a > -1
및 column_b > -1
조건자를 만족한다고 가정합니다. 이 경우 누락된 인덱스 기능이 잘못하여 column_a와 column_b 둘 다에서 인덱스를 제안할 수 있습니다. 그러면 동적 관리 뷰 sys.dm_db_missing_indexes_group_stats에서 보고하는 관련 영향 수도 잘못될 수 있습니다.
일부 쿼리에 대해 포괄 열만 반환
경우에 따라 이 기능은 포괄 열에 대한 열 사용 정보만 보고합니다. 예를 들어 같음 열 = { }, 같지 않음 열 = { } 및 포괄 열 = {b, c, ...}를 보고할 수 있습니다. 이 경우 포괄 열 중 하나를 인덱스 키 열로 선택해야 합니다. 같은 열 중 일부를 사용하는 다른 쿼리에 대해 반환되는 누락된 인덱스 정보를 사용하여 인덱스 키로 선택해야 하는 포괄 열을 확인할 수 있습니다.
원시 정보만 반환
누락된 인덱스 기능은 인덱스가 누락되었을 수 있는 열에 대한 원시 정보를 반환합니다. 즉, 반환된 정보를 사용하여 인덱스를 만들려면 추가 처리가 필요할 수 있습니다.
예를 들어 관련 열이 계산 열이고 계산이 비결정적이거나 정확하지 않으면 해당 열에 대한 CREATE INDEX 문이 실패합니다. 정확하지 않은 계산의 경우 열을 먼저 저장해야만 인덱스를 만들 수 있습니다.
XML 실행 계획에서 하나의 누락된 인덱스 그룹에 대해 서로 다른 비용 반환
누락된 인덱스 그룹은 XML 실행 계획에 여러 번 나타날 수 있으며 누락된 인덱스 그룹이 나타날 때마다 서로 다른 비용이 보고될 수 있습니다. 이는 단일 쿼리의 여러 부분이 하나의 누락된 인덱스 그룹을 다르게 이용하는 경우에 발생할 수 있습니다.
다음 예제 쿼리를 살펴 보십시오.
SELECT i.CustomerID, c.ModifiedDate, City
FROM NewIndividual i JOIN NewCustomer c ON i.CustomerID = c.CustomerID
AND c.CustomerType = 'I'
JOIN NewCustomerAddress ca ON ca.CustomerID = c.CustomerID
JOIN NewAddress a ON a.AddressID = ca.AddressID
WHERE i.CustomerID = 16701
이 쿼리에서 CustomerID 열의 두 가지 조인 조건은 NewIndividual.CustomerID 열에 같은 인덱스를 포함하는 두 개의 동일한 누락된 인덱스 그룹을 생성할 수 있습니다. 이 경우 sys.dm_db_missing_index_groups 동적 관리 뷰에는 누락된 인덱스 그룹에 대한 하나의 행만 있습니다. 그러나 누락된 인덱스 그룹은 XML 실행 계획 출력에 여러 번 나타나며 각 조인 조건에 대해 다른 비용을 반환합니다.