Mysql의 열 인덱스와 다열 인덱스를 정확하게 이해하기
CREATE TABLE test (
id INT NOT NULL,
last_name CHAR(30) NOT NULL,
first_name CHAR(30) NOT NULL,
PRIMARY KEY (id),
INDEX name (last_name,first_name)
);
위에서 생성한 것은 사실 다중 열 인덱스입니다. 열 인덱스를 만드는 코드는 다음과 같습니다.
CREATE TABLE test (
id INT NOT NULL,
last_name CHAR(30) NOT NULL,
first_name CHAR(30) NOT NULL,
PRIMARY KEY (id),
INDEX name (last_name),
INDEX_2 name (first_name)
);
하나의 다열 인덱스는 통합 (concatenate) 인덱스 열 값으로 만든 값을 포함하는 정렬 그룹으로 볼 수 있습니다.질의 문에 last 가 포함된 경우name 및 firstname의 경우:
SELECT * FROM test WHERE last_name='Kun' AND first_name='Li';
sql에서 last 를 먼저 필터합니다name 조건에 맞는 기록, 그 기초 위에first 필터링name 조건에 맞는 기록입니다.그럼 우리 각각lastname 및 first두 개의 열 인덱스를 만들면 mysql의 처리 방식이 달라집니다. 가장 엄격한 인덱스를 선택해서 검색합니다. 검색 능력이 가장 강한 인덱스로 이해할 수 있습니다. 다른 인덱스는 사용할 수 없습니다. 이 효과는 여러 열 인덱스보다 못합니다.그러나 다중 열 인덱스를 사용하는 것도 조건이 필요합니다. 다음과 같은 형식의 조회 문구는 상위 다중 열 인덱스를 사용할 수 있습니다.
SELECT * FROM test WHERE last_name='Widenius';
SELECT * FROM test WHERE last_name='Widenius' AND first_name='Michael';
SELECT * FROM test WHERE last_name='Widenius' AND (first_name='Michael' OR first_name='Monty');
SELECT * FROM test WHERE last_name='Widenius' AND first_name >='M' AND first_name < 'N';
다음 형식의 질의문에는 여러 열 색인이 사용되지 않습니다.
SELECT * FROM test WHERE first_name='Michael';
SELECT * FROM test WHERE last_name='Widenius' OR first_name='Michael';
다중 인덱스는 각 열에 각각 인덱스를 만드는 것보다 유리하다. 인덱스를 많이 만들면 할수록 디스크 공간을 차지하고 데이터를 업데이트할 때 속도가 더 느리기 때문이다.또한 다열 인덱스를 만들 때 순서도 주의해야 한다. 엄격한 인덱스를 앞에 두어야 한다. 이렇게 하면 선별의 강도가 더욱 크고 효율이 높아진다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.