답변

1

둘 다 PK의 일부인 경우 클러스터 된 인덱스에 이미있을 가능성이 높지만 색인의 경우는 (TeacherID, ClassID) (ClassID, TeacherID)이 아닌 (TeacherID, ClassID)이됩니다. 비슷한 SELECT 문을 실행에 계획하는 경우에, ClassID가와 TeacherID을 포함하여 새로운 인덱스를 추가

SELECT * FROM TeacherClass WHERE ClassID = 9 

를 실행하는 경우에,

SELECT * FROM TeacherClass WHERE TeacherID = 9 

하지만 느린 :이 같은 뭔가를 실행할 때 테이블이 빠르게 될 것을 의미합니다 그 순서. 그러면 별도의 인덱스가 필요하지 않습니다 (Col1과 Col2를 포함하는 인덱스를 사용하면 Col1 만 중복되는 인덱스가됩니다).

1

(TeacherID, ClassID)에 기본 키가있는 경우 이미 해당 키에 대한 색인이 있습니다.

그러나 매개 변수로 ClassID 만 사용하는 쿼리는 해당 인덱스를 사용할 수 없으며 해당 인덱스는 (TeacherID) 또는 (TeacherID, ClassID)에서만 작동합니다.

그렇습니다. ClassID 열이 다른 테이블의 외래 키로 사용되는 경우, 나는 확실히 (ClassID)에 색인을 붙여야한다고 주장 할 것입니다.

다만 TeacherID에 대한 색인은 완전히 불필요합니다.