8.3.4 컬럼 인덱스
가장 일반적인 인덱스 유형은 단일 열이 데이터 구조에 그 컬럼의 값의 복사본을 저장하고 해당 컬럼 값이있는 행을 빠르게 조회 할 수 있습니다. B 트리 데이터 구조로 인덱스는 WHERE
절의 =
, >
, ≤
, BETWEEN
, IN
등의 연산자에 대응하는 특정 값, 값 세트 또는 값의 범위를 신속하게 찾을 수 있습니다.
테이블 당 최대 인덱스 수와 인덱스의 최대 길이는 스토리지 엔진에 대해 정의됩니다. 제 15 장 "대체 스토리지 엔진" 을 참조하십시오. 모든 스토리지 엔진은 테이블 당 16 개 이상의 인덱스와 256 바이트 이상의 총 인덱스 길이를 지원합니다. 대부분의 스토리지 엔진은 제한이 높게 설정되어 있습니다.
프리픽스 인덱스
인덱스 지정으로
구문을 사용하여 문자열 컬럼의 선두의 col_name
( N
)N
문자 만 사용하는 인덱스를 만들 수 있습니다. 이와 같이 컬럼 값의 프리픽스 만의 인덱스를 만들면 인덱스 파일을 상당히 줄일 수 있습니다. BLOB
또는 TEXT
컬럼에 인덱스 설정하는 경우 인덱스 프리픽스 길이를 지정해야합니다. 예 :
CREATE TABLE test (blob_col BLOB, INDEX (blob_col (10)));
프리픽스는 최대 1000 바이트 ( innodb_large_prefix
을 설정하지 않는 한, InnoDB
테이블의 경우 767 바이트)입니다.
프리픽스의 제한은 바이트 단위로 측정되지만, CREATE TABLE
문에서 프리픽스 길이는 문자로 해석됩니다. 멀티 바이트 문자 집합을 사용하는 컬럼의 프리픽스 길이를 지정하는 경우 이것을 고려하십시오.
FULLTEXT 인덱스
FULLTEXT
인덱스 생성도 가능합니다. 이들은 전체 텍스트 검색에 사용됩니다. InnoDB
와 MyISAM
스토리지 엔진 만 CHAR
, VARCHAR
및 TEXT
컬럼에 대해서만 FULLTEXT
인덱스를 지원하고 있습니다. 인덱스 설정은 항상 컬럼 전체에 대해서 행해져 컬럼 접두어 인덱싱은 지원되지 않습니다. 자세한 내용은 섹션 12.9 "전체 텍스트 검색 함수" 를 참조하십시오.
최적화는 단일 InnoDB
테이블에 대한 특정 유형의 FULLTEXT
쿼리에 적용됩니다. 이러한 특성을 가진 쿼리는 특히 효율적입니다.
문서 ID 또는 문서 ID와 검색 순위 만 반환
FULLTEXT
쿼리.일치하는 행을 점수의 내림차순으로 정렬하고
LIMIT
절을 적용하여 상위 N 개의 일치하는 행을 검색하는FULLTEXT
쿼리. 이 최적화를 적용하려면WHERE
절없이 내림차순 하나의ORDER BY
절에만이 있어야합니다.검색어와 일치하는 행의
COUNT(*)
값 만 검색하고 추가WHERE
절이없는FULLTEXT
쿼리.WHERE
절을> 0
비교 연산자를 사용하지 않고,WHERE MATCH(
와 코딩합니다.text
) AGAINST ('other_text
')
공간 인덱스
공간 데이터 형식에 인덱스를 만들 수 있습니다. 현재 MyISAM
만 공간 형에 R 트리 인덱스를 지원하고 있습니다. 다른 스토리지 엔진은 공간 형 인덱스 설정에 B 트리를 사용합니다 ( ARCHIVE
를 제외합니다. 이것은 공간 형 인덱싱을 지원하지 않습니다).
MEMORY 스토리지 엔진의 인덱스
MEMORY
스토리지 엔진은 기본적으로 HASH
인덱스를 사용하지만, BTREE
인덱스도 지원하고 있습니다.