mysql은 공동 인덱스를 생성할 수 있습니다. MySQL에서는 최대 16개의 컬럼을 포함하는 조인트 인덱스를 생성할 수 있습니다. 1. 테이블을 생성할 때 생성합니다. "CREATE TABLE 테이블 이름(컬럼 이름 1 유형 PRIMARY KEY, 컬럼 이름 2 유형) 3 유형, ...INDEX 인덱스 이름(컬럼 이름 2, 컬럼 이름 3...));"; 2. 테이블 수정 시 구문 "CREATE INDEX 인덱스 이름 ON 테이블 이름(컬럼 이름 2, 컬럼 이름)"을 생성합니다. 3, 열 이름 4 );".
이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.
공동지수란 무엇인가요? 조인트 인덱스의 본질: 두 개 이상의 열에서 가장 왼쪽에 일치하는 인덱스를 조인트 인덱스라고 하며, 조인트 인덱스를 복합 인덱스라고도 합니다. MySQL을 사용하면 사용자는 최대 16개의 열을 포함하는 복합 인덱스를 생성할 수 있습니다. 복합 인덱스의 경우: MySQL은 인덱스의 필드를 왼쪽에서 오른쪽으로 사용합니다. 쿼리는 인덱스의 일부만 사용할 수 있지만 가장 왼쪽 부분만 사용할 수 있습니다.
예를 들어 인덱스는
입니다. 검색에는 a | a, b | a, b, c의 세 가지 조합이 지원되지만, 가장 왼쪽 필드가 상수 참조인 경우에는 지원되지 않습니다. 인덱스는 매우 효과적입니다.쿼리 최적화 프로그램은 인덱스의 모든 열을 테스트하는 쿼리 또는 첫 번째 열, 처음 두 열 등을 테스트하는 쿼리에 복합 인덱스를 사용합니다. key index (a,b,c)
인덱스 정의에서 올바른 순서로 열을 지정하면 단일 복합 인덱스를 사용하여 동일한 테이블에서 이러한 유형의 쿼리 속도를 높일 수 있습니다.
구문: CREATE TABLE 表名 (
c1 data_type PRIMARY KEY,
c2 data_type,
c3 data_type,
c4 data_type,
INDEX 索引名 (c2,c3,c4)
);
다음 CREATE INDEX 문을 사용하여 기존 테이블에 복합 인덱스를 추가할 수 있습니다. CREATE INDEX 索引名
ON 表名(c2,c3,c4);
(c1) (c1,c2) (c1,c2,c3)
예:
SELECT * FROM table_name WHERE c1 = v1; SELECT * FROM table_name WHERE c1 = v1 AND c2 = v2; SELECT * FROM table_name WHERE c1 = v1 AND c2 = v2 AND c3 = v3;
열이 인덱스의 가장 왼쪽 접두사를 형성하지 않는 경우 쿼리 최적화 프로그램은 인덱스를 사용할 수 없습니다. 조회를 수행합니다. 예를 들어 다음 쿼리는 복합을 사용하여 찾을 수 없습니다.
SELECT * FROM table_name WHERE c1 = v1 AND c3 = v3;
MySQL Union Index 예제
샘플 데이터베이스의 직원 테이블을 사용하는 방법을 보여 드리겠습니다.
다음 문은 lastName 및 firstName 열에 공동 인덱스를 생성합니다.CREATE INDEX name ON employees(lastName, firstName);
첫째, lastName 열이 가장 왼쪽 접두사이므로 lastName 값을 지정하는 쿼리에서 조회에 이름 인덱스를 사용할 수 있습니다. 인덱스의.
두 번째로 이름 인덱스를 사용하면 lastName과 firstName 값의 조합 값을 쿼리할 수 있습니다.
name 인덱스는 다음 쿼리에서 찾는 데 사용됩니다.
SELECT firstName, lastName, email FROM employees WHERE lastName = 'Patterson';
인 직원을 찾습니다. 이 쿼리는 인덱스의 가장 왼쪽 접두사(예: lastName 열)가 사용되므로 이름 인덱스를 사용합니다. 검색.
EXLAIN 절을 쿼리에 추가하여 이를 확인할 수 있습니다.
EXPLAIN SELECT firstName, lastName, email FROM employees WHERE lastName = 'Patterson';
출력은 다음과 같습니다.
2) 성은 Patterson이고 이름은 Steve인 직원 찾기:SELECT firstName, lastName, email FROM employees WHERE lastName = 'Patterson' AND firstName = 'Steve';
확인해 보겠습니다.
EXPLAIN SELECT firstName, lastName, email FROM employees WHERE lastName = 'Patterson' AND firstName = 'Steve';
출력은 다음과 같습니다.
3) 성이 Patterson이고 이름이 Steve 또는 Mary인 직원을 찾습니다.SELECT firstName, lastName, email FROM employees WHERE lastName = 'Patterson' AND (firstName = 'Steve' OR firstName = 'Mary');
다음 문은 인덱스 사용을 확인합니다.
EXPLAIN SELECT firstName, lastName, email FROM employees WHERE lastName = 'Patterson' AND (firstName = 'Steve' OR firstName = 'Mary');
출력은 다음과 같습니다.
firstName이 인덱스의 가장 왼쪽 접두사가 아닌 열만 사용되므로 쿼리 최적화 프로그램은 다음 쿼리에서 조회에 이름 인덱스를 사용할 수 없습니다. 사용:SELECT firstName, lastName, email FROM employees WHERE firstName = 'Leslie';
SELECT firstName, lastName, email FROM employees WHERE firstName = 'Anthony' OR lastName = 'Steve';
【관련 추천:
mysql 비디오 튜토리얼】
위 내용은 mysql이 공동 인덱스를 생성할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!