>  기사  >  데이터 베이스  >  mysql의 인덱스 유형은 무엇입니까

mysql의 인덱스 유형은 무엇입니까

清浅
清浅원래의
2019-03-30 11:22:0072774검색

mysql의 인덱스 유형은 다음과 같습니다. 1. 일반 인덱스, 2. 고유 인덱스, 3. 기본 키 인덱스, 5. 전체 텍스트 인덱스. 일반 인덱스는 가장 기본적인 인덱스이며 제한이 없습니다. 고유 인덱스를 사용하려면 인덱스 열의 값이 고유해야 하지만 null 값은 허용됩니다. MySQL의 인덱스 종류는 다음과 같습니다.

mysql의 인덱스 유형은 무엇입니까

전체 텍스트 인덱스

  • (추천 튜토리얼:

    mysql 비디오 튜토리얼

    )
  • 1이 가장 기본적인 인덱스입니다. 제한이 없습니다. 생성 방법은 다음과 같습니다.

  • 인덱스 직접 생성

    CREATE INDEX index_name ON table(column(length))
  • 테이블 구조를 수정하여 인덱스 추가

    ALTER TABLE table_name ADD INDEX index_name ON (column(length))
  • 테이블 생성과 동시에 인덱스 생성

    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))
    )
인덱스 삭제

DROP INDEX index_name ON table

2. 고유 인덱스 는 인덱스 열의 값이 고유해야 한다는 점을 제외하면 이전 일반 인덱스와 유사하지만 null 값이 허용됩니다. 복합 인덱스의 경우 컬럼 값의 조합이 고유해야 합니다. 생성 방법은 다음과 같습니다.

고유 인덱스 생성

CREATE UNIQUE INDEX indexName ON table(column(length))

테이블 구조 수정

ALTER TABLE table_name ADD UNIQUE indexName ON (column(length))

테이블 생성 시 직접 지정

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. 기본 키 인덱스

는 다음과 같습니다. 특수 고유 인덱스의 경우 테이블은 기본 키를 하나만 가질 수 있으며 null 값은 허용되지 않습니다. 일반적으로 기본 키 인덱스는 테이블 생성과 동시에 생성됩니다.

CREATE TABLE `table` (
    `id` int(11) NOT NULL AUTO_INCREMENT ,
    `title` char(255) NOT NULL ,    PRIMARY KEY (`id`)
);

4. 결합 인덱스

는 인덱스 생성 시 첫 번째 필드에서만 생성되는 인덱스를 말합니다. 쿼리 조건에 사용됩니다. 결합 인덱스를 사용하는 경우 가장 왼쪽 접두사 set

ALTER TABLE `table` ADD INDEX name_city_age (name,city,age);

5를 따릅니다. 전체 텍스트 인덱스

는 인덱스에 있는 값과 직접 비교하기보다는 텍스트에서 키워드를 찾는 데 주로 사용됩니다. 전체 텍스트 인덱스는 다른 인덱스와 매우 다릅니다. 이는 단순히 where 문의 매개변수 일치라기보다는 검색 엔진에 가깝습니다. 전체 텍스트 인덱스는 일반 where 문과 like 대신 일치 항목 작업과 함께 사용됩니다. create table, alter table, create index에 사용할 수 있지만 현재는 char, varchar, text 열에 대해 전체 텍스트 인덱스만 생성할 수 있습니다. 데이터의 양이 많을 경우 먼저 테이블에 대한 전체 텍스트를 생성한 후 작성하는 것보다 글로벌 인덱스가 없는 테이블에 데이터를 넣은 후 CREATE 인덱스를 사용하여 전체 텍스트 인덱스를 생성하는 것이 더 낫다는 점을 언급할 필요가 있습니다. 데이터를 넣으면 속도가 훨씬 빨라집니다.

테이블 생성 시 전체 텍스트 인덱스를 추가하는 것이 적합합니다

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)
);

테이블 구조를 수정하여 전체 텍스트 인덱스를 추가하세요

ALTER TABLE article ADD FULLTEXT index_content(content)

인덱스를 직접 생성

CREATE FULLTEXT INDEX index_content ON article(content)

단점

1. 인덱스를 사용하면 쿼리 속도가 크게 향상되지만 동시에 테이블에 대한 삽입, 업데이트, 삭제 등 테이블 업데이트 속도가 느려집니다. 테이블을 업데이트할 때 데이터뿐만 아니라 인덱스 파일도 저장해야 하기 때문입니다.
2. 인덱스 파일을 생성하면 디스크 공간을 차지합니다. 일반적으로 이 문제는 심각하지 않지만, 큰 테이블에 여러 개의 결합된 인덱스를 생성하면 인덱스 파일이 빠르게 커집니다. 인덱스는 효율성을 향상시키는 하나의 요소일 뿐입니다. 많은 양의 데이터가 포함된 테이블이 있는 경우 최상의 인덱스를 조사하고 구축하거나 쿼리 문을 최적화하는 데 시간을 투자해야 합니다.

참고사항

인덱스를 사용할 때 몇 가지 팁과 주의사항이 있습니다. 1. 인덱스에는 null 값이 있는 열이 포함되지 않습니다.

열에 null 값이 포함되어 있는 한 인덱스에 포함되지 않습니다. , 복합 인덱스의 한 열에 Null 값이 포함되어 있으면 이 열은 이 복합 인덱스에 유효하지 않습니다. 따라서 데이터베이스를 설계할 때 해당 필드의 기본값이 null이 되도록 해서는 안 됩니다.

2. 문자열을 색인화하려면 짧은 색인

을 사용하세요. 가능하면 접두사 길이를 지정해야 합니다. 예를 들어 char(255) 열이 있고 대부분의 값이 처음 10자 또는 20자 내에서 고유한 경우 전체 열을 인덱싱하지 마세요. 짧은 인덱스는 쿼리 속도를 향상시킬 뿐만 아니라 디스크 공간과 I/O 작업을 절약합니다.

3. 인덱스 열 정렬

쿼리는 하나의 인덱스만 사용하므로 where 절에 인덱스가 사용된 경우 순서대로의 열은 인덱스를 사용하지 않습니다. 따라서 데이터베이스의 기본 정렬이 요구 사항을 충족할 수 있으면 정렬 작업을 사용하지 마십시오. 필요한 경우 이러한 열에 대한 복합 인덱스를 만드는 것이 가장 좋습니다.

4. Like 문 연산

일반적으로 like 연산을 사용해야 한다면 어떻게 사용하는지도 문제가 됩니다. "%aaa%"는 인덱스를 사용하지 않지만 "aaa%"는 인덱스를 사용합니다.


5.

SELECT * FROM table_name WHERE YEAR(column_name)<2017;

6과 같은 인덱스 오류 및 전체 테이블 스캔을 유발할 수 있는 작업을 열에 수행하지 마세요.

위 내용은 mysql의 인덱스 유형은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.