2014-11-25 1 views
0

두 개의 열 (dept_ID 및 dept_name)이있는 테이블 부서 다른 테이블은 테이블 부서에서 dept_name을 참조하는 열 dept_name에 대한 외래 키를 생성하는 login입니다. 그래서 index_department라는 색인을 생성합니다. 이제 로그인 테이블에서 info_table이라는 다른 테이블을 참조하는 eadd 열에 대해 다른 외래 키를 생성하려고합니다.각 외래 키에 대한 인덱스를 만들어야합니까?

두 번째 외래 키에 대한 다른 인덱스를 만들어야합니까 ??

다른 시나리오에서 info_table에 dept_name 열을 너무 만들고 싶습니다. 동일한 색인 'index_department'를 사용할 수 있습니까 ??

+1

'department.id' 대신'department.dept_name'을 참조 할 이유가 있습니까? –

+0

쿼리의 성능 요구 사항을 충족시키기 위해 인덱스를 만듭니다. 그런 색인을 사용할 수도있는 어떤 검색어를 실행하고 싶습니까? 예제를 사용하여 질문을 편집 할 수 있습니다. –

+0

외래 키는 항상 색인됩니다. –

답변

2

일반적으로 대답은 "다릅니다."입니다.

As @ gordon-Linoff는 "쿼리 성능 요구 사항을 충족시키기 위해 인덱스를 만듭니다"라고 설명했습니다.

인덱스는 공간을 차지하며 유지 관리해야 할 처리 시간이 필요합니다. 따라서 주어진 지수에 대한 경우는 비용과 사용 간의 절충에 달려 있습니다. 예를 들어 데이터가 거의 변경되지 않지만 많이 조회하면 더 많은 색인을 선호합니다.

필자가 잘 알고있는 척도로 당신이 작업하고있는 척도에서 모든 외래 키에 대한 인덱스를 원한다는 것입니다.

특히 mysql에서 인덱스를 얻는 것처럼 보이는 것은 공식적으로 FK 제약을 추가한다는 것입니다. 여기에서 설명합니다. does mysql index foreign key columns automatically

실제로 제약 조건을 선언/적용하지 않고 내포 된 외래 키 관계를 가질 수 있기 때문에 공식적으로 말합니다. 사람들은 때로는 검사/시행 제한의 비용조차 피하기 위해 그렇게합니다. 참조 무결성을 위반하는 업데이트에 위험이 있습니다. 그러나 나는 접선으로 표류하고 있습니다. 보조 노트로

가 여기 does a foreign key automatically create an index

0

(내가 사용하고 적어도 5.6) MySQL의에서 일부 관련 논의가, 인덱스가 자동으로 외래 키 생성됩니다.

관련 문제