이 기사에서는 MySQL에서 두 테이블에 관련된 연결 테이블에 대한 인덱스를 생성하는 방법에 대한 관련 정보를 그림과 텍스트를 통해 소개합니다. 기사의 소개는 매우 자세하며 모든 사람에게 확실한 참고 및 학습 가치를 제공합니다. 필요해요, 와서 보세요.
문제 소개
데이터베이스에 대한 인덱스를 생성하려면 단일 열 인덱스를 선택하거나 결합 인덱스를 생성할 수 있습니다.
다음 상황이 발생했는데, 아래 그림과 같이 사용자 테이블(user)과 부서 테이블(dept)이 부서 사용자 연관 테이블(deptuser)을 통해 연결되었습니다.
테이블 간의 관계
The 문제는 관련 테이블에 인덱스를 만드는 방법입니다.
이 테이블에는 다음 네 가지 옵션이 있습니다.
user_uuid에 대한 단일 열 인덱스 idx_user를 구축합니다.
user_dept에 대한 단일 열 인덱스 idx_dept를 구축
결합된 인덱스 idx_user_dept를 구축합니다. is (user_uuid, dept_uuid)
결합된 인덱스 idx_dept_user, 즉 (dept_uuid, user_uuid)를 생성합니다.
관련 테이블을 쿼리하는 경우에는 네 가지 상황이 있습니다.
-- 一、人员查所属部门用and方式 EXPLAIN SELECT d.dept_name,u.* FROM org_dept d,org_user u,org_dept_user duser WHERE u.user_uuid=duser.user_uuid AND d.dept_uuid=duser.dept_uuid AND u.user_code="dev1"; -- 二、人员查所属部门用join方式 EXPLAIN SELECT d.dept_name,u.* FROM org_user u LEFT JOIN org_dept_user du ON u.user_uuid=du.user_uuid LEFT JOIN org_dept d ON du.dept_uuid=d.dept_uuid WHERE u.user_code="dev1"; -- 三、部门查人员用and方式 EXPLAIN SELECT d.dept_name,u.* FROM org_dept d,org_user u,org_dept_user du WHERE u.user_uuid=du.user_uuid AND d.dept_uuid=du.dept_uuid AND d.dept_code="D006"; -- 四、部门查所属人员用join方式 EXPLAIN SELECT d.dept_name,u.* FROM org_dept d LEFT JOIN org_dept_user du ON d.dept_uuid=du.dept_uuid LEFT JOIN org_user u ON u.user_uuid=du.user_uuid WHERE d.dept_code="D006";
테스트 확인
1. 소속된 부서를 확인하는 방법
1.1 관련 테이블에 인덱스가 없습니다
1.2 단일 인덱스 Idx_dept
1.3 단일 인덱스 Idx_user
1.4 결합 인덱스 Idx_dept_user
1.5 통합 인덱스 Idx_user_dept
1.6 모든 것이 생성됩니다.
2. Join 메소드를 사용하여 구성원이 속한 부서를 확인합니다.
2.1 연관된 테이블에는 색인이 없습니다
2.2 단일 인덱스 Idx_dept
2.3 단일 인덱스 Idx _user
2.4 결합 인덱스 Idx_dept_user
2.5 index Idx_user_dept
2.6 모두
에 생성됩니다.
3. 부서 확인 인원 사용 및 방법
3.1 연관 테이블에 인덱스가 없습니다
3.2 단일 인덱스 Idx_dept
3.3 단일 인덱스 Idx_user
3.4 결합 인덱스 Idx_dept_user
3.5 조합 인덱스 Idx_user_dept
3.6 모두
4에 구축됨 4. 부서에 속한 직원을 확인하려면 조인 방법을 사용하세요
4.1 관련 테이블에 인덱스가 없습니다.
4.2 단일 인덱스 Idx_dept
4.3 단일 인덱스 Idx_user
4.4 결합 인덱스 Idx_dept_user
4 .5 결합 인덱스 Idx_user_dept
4.6 모두
에 구축됨
결론
위의 실제 테스트 결과를 통해 다음과 같은 결론을 내릴 수 있습니다. 이 연관 테이블의 경우 user_uuid 및 dept_uuid에 대해 각각 단일 열 인덱스 idx_user 및 idx_dept를 설정하는 것이 최적입니다.
인사 ID를 통해 그 사람의 부서를 조회하는 데에는 idx_user 인덱스가 적합하고, 부서를 통해 부서 소속 직원을 조회하는 데에는 idx_dept 인덱스가 적합합니다.
관련 권장 사항:
집계 함수 및 조인 테이블의 결합 사용을 분석_MySQL
mysql을 통해 두 테이블 간의 관련 업데이트 구현_MySQL,
위 내용은 MySQL에서 두 테이블과 관련된 조인 테이블에 대한 인덱스를 생성하는 방법에 대한 자세한 그래픽 및 텍스트 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!