진지 :
나는 MySQL은이 작업을 수행 알고 있지만, 나는 아주 이유를 이해하지 않습니다. 당신이 부모 테이블을 참조하는 자식 테이블이있는 경우 인덱스가 부모 테이블에 필요한 이유, 이해합니다. 삽입 할 때, 당신은 행이 해당 테이블에 존재하는지 찾아 볼 수 있습니다.
그런데 왜 인덱스가 자동으로 자식 테이블에 생성됩니다? MySQL은이 인덱스를 사용 않는 경우?
Barmar :
이 같은 옵션을 사용하는 경우 ON DELETE CASCADE
와 ON DELETE SET NULL
, 관련된 모든 자식 행을 찾을 수 있고, 인덱스이 효율적으로 필요하다.
이러한 옵션을 사용하지 않는 경우에도, 외부 키를 확인하는 것은 부모와 자식 테이블에 열을 비교해야합니다. 두 테이블에서 인덱스를 요구하는 것은이 단지 더 효율적이다, 전체 행을 인덱스를 사용하기보다는 읽기 수행 할 수 있습니다.