2015-01-08 5 views
0

상당히 많은 레코드가있는 테이블에서 느린 쿼리가 발생했습니다.인덱스 열 결정

성능 문제를 줄이기 위해 다른 테이블과의 조인을 돕기 위해 큰 테이블의 레코드 하위 집합을 포함하는 준비 테이블을 만들었습니다. 성능이 상당히 향상되었지만 큰 테이블을 쿼리하여 준비 테이블에 어떤 레코드를 삽입해야하는지 확인하는 프로세스는 여전히 많은 비용이 듭니다.

Consulting this page, "비용이 많이 드는 누락 된 인덱스"쿼리를 사용하여 큰 테이블에 어떤 인덱스를 적용 할 수 있는지 확인했지만 거의 모든 열을 단일 인덱스에 포함시키는 것이 좋습니다. 어느 것이 내 질문에 도달 하는가? 인덱스는 가장 일반적으로 가져온 열 또는 검색 조건에서 가장 많이 사용되는 열로 간주됩니까?

+0

전체 테이블 또는 거의 선택하면 검색 조건에 사용되는 인덱스가 많이 도움이되지 않습니다. 이제 SQL Server는 싱크대를 제안하고 모든 것을 인덱스에 넣습니다. – Mihai

+0

행의 모든 ​​열을 선택해야하지만 검색 조건에 두 개의 열만 사용합니다. 그러나 모든 열을 인덱스에 넣으면 성능에 어떤 차이도 생기지 않을 것입니다. –

답변

1

인덱스는 데이터베이스가 검색 조건과 일치하는 레코드를 찾을 수있는 속도를 향상시키는 데 사용되므로 인덱스에 대한 대답은 검색 조건에 사용되는 열에서만 유용합니다.

자주 페치되지만 검색 조건으로 표시되지 않는 열에 인덱스를 추가하는 것은 인덱스를 유지해야하므로 DML 작업에 추가 오버 헤드를 추가하는 것 외에는 용도가 없습니다.