MySQL에서 두 테이블과 관련된 조인 테이블에 대한 인덱스를 생성하는 방법에 대한 자세한 그래픽 및 텍스트 설명

小云云
풀어 주다: 2018-01-13 16:26:05
원래의
5856명이 탐색했습니다.

이 기사에서는 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의 테이블 파티셔닝에 대한 자세한 소개

위 내용은 MySQL에서 두 테이블과 관련된 조인 테이블에 대한 인덱스를 생성하는 방법에 대한 자세한 그래픽 및 텍스트 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿