MySQL 인덱스, 몇 가지 종류가 있는지 아세요?

4226 단어
소개
MySQL은 현재 주로 다음과 같은 색인 유형이 있습니다. 1.일반 색인 2.고유 인덱스 3.주 키 인덱스 4.조합 색인 5.전체 텍스트 인덱스
2. 문장
CREATE TABLE table_name[col_name data type][unique|fulltext][index|key]index_name[asc|desc] 1.unique|fulltext는 선택할 수 있는 매개 변수로 각각 유일한 인덱스, 전체 텍스트 인덱스를 나타낸다.index와 키는 같은 뜻의 단어로 두 가지 작용이 같아서 색인 생성을 지정합니다.col_인덱스를 만들어야 하는 필드 열입니다. 이 열은 데이터 테이블에 정의된 여러 열에서 4.index_name 색인 이름 지정, 선택적 인자, 지정하지 않으면 기본col인덱스 값 5.length는 선택할 수 있는 매개 변수로 색인의 길이를 표시하며 문자열 형식의 필드만 색인 길이를 지정할 수 있습니다.asc 또는 desc에서 오름차순 또는 내림차순을 지정하는 인덱스 값 저장소
색인 유형
1. 일반 색인은 가장 기본적인 색인으로 아무런 제한이 없다.이것은 다음과 같은 몇 가지 생성 방식이 있습니다: (1) 직접 색인을 만듭니다
CREATE INDEX index_name ON table (column (length) (2) 테이블 구조를 수정하는 방식으로 색인 추가
ALTER TABLE table_name ADD INDEX index_name on (column (length) (3) 테이블을 만들 때 색인을 만듭니다.
CREATE TABLE table ( id int(11) NOT NULL AUTO_INCREMENT , title char(255) CHARACTER NOT NULL , content text CHARACTER NULL , time int(10) NULL DEFAULT NULL , PRIMARY KEY ( id ), INDEX index_name (title(length)) )
(4) 색인 삭제
DROP INDEX index_name ON table 2.유일한 인덱스는 앞의 일반 인덱스와 유사하지만, 다른 것은 인덱스 열의 값은 유일해야 하지만, 빈 값을 허용해야 한다는 것이다.조합 색인이라면, 열 값의 조합은 유일해야 합니다.이것은 다음과 같은 몇 가지 생성 방식이 있습니다: (1) 유일한 인덱스를 만듭니다
CREATE UNIQUE INDEX indexName ON table(column(length))(2) 테이블 구조 수정
ALTER TABLE table_name ADD UNIQUE indexName on (column (length) (3) 테이블을 만들 때 직접 지정
CREATE TABLE table ( id int(11) NOT NULL AUTO_INCREMENT , title char(255) CHARACTER NOT NULL , content text CHARACTER NULL , time int(10) NULL DEFAULT NULL , UNIQUE indexName (title(length)) );
3. 메인 키 인덱스는 특수한 유일한 인덱스입니다. 한 테이블에 하나의 메인 키만 있을 수 있고 빈 값이 있을 수 없습니다.일반적으로 테이블을 만들 때 키 인덱스를 동시에 만듭니다.
CREATE TABLE table ( id int(11) NOT NULL AUTO_INCREMENT , title char(255) NOT NULL , PRIMARY KEY ( id ) ); 4. 조합 인덱스는 여러 필드에서 작성된 인덱스를 말하며, 검색 기준에서 인덱스를 작성한 첫 번째 필드만 사용할 수 있습니다.조합 색인을 사용할 때 가장 왼쪽 접두사 집합을 따른다
ALTER TABLE table ADD INDEX name_city_age (name,city,age); 5. 전체 텍스트 인덱스는 주로 텍스트의 키워드를 찾는 데 사용되며 인덱스의 값과 직접 비교하는 것이 아니다.fulltext 인덱스는 다른 인덱스와 크게 다르며, 간단한where 문장의 매개 변수가 일치하는 검색엔진과 비슷합니다.fulltext 인덱스는 일반적인where 문장에 like를 붙이는 것이 아니라 match against 작업과 함께 사용됩니다.이것은create table,alter table,create index에서 사용할 수 있지만 현재는char,varchar,text열에서만 전문 인덱스를 만들 수 있습니다.특히 데이터의 양이 많을 때 전역 인덱스가 없는 테이블에 데이터를 넣은 다음 CREATE index로fulltext 인덱스를 만드는 것은 먼저 테이블에fulltext를 만든 다음에 데이터를 쓰는 속도보다 훨씬 빠르다.(1) 전체 텍스트 인덱스 추가에 적합한 테이블 만들기
CREATE TABLE table ( id int(11) NOT NULL AUTO_INCREMENT , title char(255) CHARACTER NOT NULL , content text CHARACTER NULL , time int(10) NULL DEFAULT NULL , PRIMARY KEY ( id ), FULLTEXT (content) );
(2) 테이블 구조 수정 전문 인덱스 추가
ALTER TABLE article ADD FULLTEXT index_인덱스 만들기
CREATE FULLTEXT INDEX index_단점
1. 색인은 조회 속도를 크게 높일 뿐만 아니라 업데이트 테이블의 속도도 낮출 수 있다. 예를 들어 테이블에 insert, 업데이트, delete를 진행한다.테이블을 업데이트할 때 데이터를 저장해야 할 뿐만 아니라 색인 파일도 저장해야 하기 때문이다.2. 인덱스를 작성하면 디스크 공간을 차지하는 인덱스 파일입니다.일반적인 경우 이 문제는 그다지 심각하지 않지만, 큰 표에 여러 종류의 조합 인덱스를 만들면 인덱스 파일의 증가가 매우 빠르다.인덱스는 효율을 높이는 요소일 뿐이다. 만약에 빅데이터 양의 표가 있다면 가장 우수한 인덱스를 구축하거나 조회 문장을 최적화하는 데 시간을 들여야 한다.
5. 주의사항
색인을 사용할 때 다음과 같은 몇 가지 기교와 주의사항이 있다.인덱스에는null값이 있는 열이 포함되지 않습니다. 열에null값이 포함되면 인덱스에 포함되지 않습니다. 복합 인덱스에는null값이 포함되어 있으면 이 열은 복합 인덱스에 무효입니다.그래서 데이터베이스를 디자인할 때 필드의 기본값을null로 설정하지 마십시오.2. 짧은 색인을 사용하여 열을 색인합니다. 가능한 경우 접두사 길이를 지정해야 합니다.예를 들어char(255)의 열이 있다면 10글자나 20글자 안에 다수치가 유일하면 전체 열을 인덱스하지 마십시오.짧은 인덱스는 조회 속도를 높일 뿐만 아니라 디스크 공간과 입출력 작업도 절약할 수 있다.3. 색인열 정렬 조회는 하나의 색인만 사용하기 때문에where 자구에서 색인을 사용했다면order by의 열은 색인을 사용하지 않습니다.따라서 데이터베이스 기본 정렬은 요구에 부합되는 상황에서 정렬 조작을 사용하지 않는다.가능한 한 여러 열의 정렬을 포함하지 마십시오. 만약 필요하다면 이 열에 복합 인덱스를 만드는 것이 좋습니다.4. like 문장 조작은 일반적인 상황에서 like 조작을 사용하는 것을 추천하지 않는다. 만약 사용하지 않으면 안 된다. 어떻게 사용하는가도 문제다.like '%aaa%' 는 색인을 사용하지 않고 like '%aaa%' 는 색인을 사용할 수 있습니다.5. 열에서 연산을 하지 마십시오. 그러면 색인이 효력을 상실하여 전체 표를 스캔할 수 있습니다. 예를 들어
SELECT * FROM table_name WHERE YEAR(column_name)<2017; 6. not in 및 <> 작업을 사용하지 않음

좋은 웹페이지 즐겨찾기