왜 MySQL은 자동으로 외래 키 검사에 대한 인덱스를 추가합니까?

진지 :

나는 MySQL은이 작업을 수행 알고 있지만, 나는 아주 이유를 이해하지 않습니다. 당신이 부모 테이블을 참조하는 자식 테이블이있는 경우 인덱스가 부모 테이블에 필요한 이유, 이해합니다. 삽입 할 때, 당신은 행이 해당 테이블에 존재하는지 찾아 볼 수 있습니다.

그런데 왜 인덱스가 자동으로 자식 테이블에 생성됩니다? MySQL은이 인덱스를 사용 않는 경우?

Barmar :

이 같은 옵션을 사용하는 경우 ON DELETE CASCADEON DELETE SET NULL, 관련된 모든 자식 행을 찾을 수 있고, 인덱스이 효율적으로 필요하다.

이러한 옵션을 사용하지 않는 경우에도, 외부 키를 확인하는 것은 부모와 자식 테이블에 열을 비교해야합니다. 두 테이블에서 인덱스를 요구하는 것은이 단지 더 효율적이다, 전체 행을 인덱스를 사용하기보다는 읽기 수행 할 수 있습니다.

추천

출처http://43.154.161.224:23101/article/api/json?id=25933&siteId=1