MySQL에서 인덱스 생성: MySQL 인덱스 튜토리얼 [2022]

게시 됨: 2021-01-01

데이터 과학자나 프로그래머는 많은 양의 데이터로 작업해야 하며 더 빠른 실행을 위해 데이터를 효율적으로 처리할 수 있어야 합니다. 또한 데이터가 구성되는 방식과 필요한 특정 데이터에 쉽게 액세스할 수 있는 가장 빠른 방법을 알아야 합니다.

MySQL은 웹 데이터베이스, 전자 상거래 애플리케이션, 소셜 미디어 등과 같은 다양한 분야에 응용 프로그램이 있는 관계형 데이터베이스 관리 시스템이기 때문에 데이터 과학자는 인덱스 중 하나인 MySQL과 관련된 모든 기술을 알아야 합니다. 이 기사에서는 MySQL에서 인덱스를 생성하는 방법을 설명합니다.

목차

색인이란 무엇입니까?

MySQL에서 인덱스는 조직화된 순차적인 방식으로 데이터를 정렬하고 데이터를 효율적이고 빠르게 검색하는 데 사용됩니다. 데이터를 필터링하는 데 사용할 하나 이상의 열을 사용하여 생성됩니다. 인덱스는 기본 또는 인덱스 필드와 기본 테이블의 각 레코드에 대한 포인터를 유지하는 테이블 유형입니다.

이해를 돕기 위해 책 색인을 예로 들 수 있습니다. 책의 모든 페이지를 검색하여 페이지를 찾는 대신 책 색인을 확인하여 원하는 페이지를 찾을 수 있습니다.

대부분의 데이터베이스 시스템에서는 빠르고 높은 성능이 필요합니다. 많은 기업이 더 빠른 데이터 검색 및 조작을 위해 하드웨어에 막대한 돈을 투자합니다. 그러나 데이터베이스를 최적화하면 비용을 줄일 수 있습니다.

레코드가 무작위로 저장되기 때문에 일반적으로 응답 시간이 더 길고 검색 쿼리는 저장된 전체 레코드를 반복하여 필요한 데이터를 찾아야 합니다. 색인을 사용하면 이 검색을 더 쉽고 빠르게 수행할 수 있습니다.

읽기: SQL에서 열 이름 바꾸기

인덱스 생성

다음 기본 구문을 사용하여 테이블 의 MySQL에서 인덱스를 생성 할 수 있습니다 .

CREATE INDEX 인덱스 이름 table_name(열 이름);

테이블에 고유 인덱스를 만들 수도 있습니다. 이는 이름이 고유하고 두 행이 같은 이름을 가질 수 없음을 의미합니다. 이를 위해 다음 구문을 사용할 수 있습니다.

CREATE UNIQUE INDEX index_name ON table_name(column_name);

컬럼에 대한 보조 인덱스가 생성되면 MySQL은 값을 B-Tree 및 Hash와 같은 별도의 데이터 구조에 저장합니다. MySQL에서 열이 문자열 열인 경우 다음 구문을 사용하여 문자열 열의 열 값의 선행 부분에 대한 인덱스를 만들 수 있습니다.

column_name(길이)

테이블이 생성될 때 열 접두사 키 부분을 생성하려면 다음 구문을 사용할 수 있습니다.

CREATE TABLE table_name(

열_목록,

INDEX(열 이름(길이))

);

그리고 기존 테이블에 인덱스를 추가하려면:

CREATE INDEX index_name ON table_name(column_name(length));

여기서 길이는 CHAR, VARCHAR, TEXT와 같은 non-binary string형인 경우 문자 수이고 BINARY, VARBINARY, BLOB와 같은 Binary string형인 경우 바이트 수입니다. MySQL에서 CHAR, VARCHAR, BINARY 및 VARBINARY 열에 대한 열 접두사 키 부분을 생성할 수도 있습니다. BLOB 및 TEXT 열에 대한 인덱스를 생성한 경우 열 접두사 키 부분을 지정해야 합니다.

InnoDB 및 MyISAM 테이블에 대해서만 지원되는 FULLTEXT 인덱스의 경우 CHAR, VARCHAR 및 TEXT 열만 포함할 수 있습니다. 열 접두사 인덱싱을 지원하지 않으며 접두사 길이가 지정되면 무시됩니다.

필독: SQL 프로젝트 아이디어

인덱스를 추가하거나 삭제하기 위해 테이블 ​​변경

테이블에 인덱스를 추가하기 위해 사용할 수 있는 네 가지 유형의 명령문이 있습니다.

  1. 기본 키를 추가하려면:

ALTER TABLE table_name ADD PRIMARY KEY(column_list);

여기에서 인덱싱된 값은 고유해야 하며 NULL일 수 없습니다.

  1. 고유 값이 있는 인덱스의 경우:

ALTER TABLE table_name ADD UNIQUE index_name(column_list);

값은 여러 번 나타날 수 있는 NULL을 제외하고 고유해야 합니다.

  1. 일반 색인을 추가하려면:

ALTER TABLE 테이블 이름 ADD INDEX 인덱스 이름(열 목록);

여기서 값은 두 번 이상 나타날 수 있습니다.

  1. 특수 FULLTEXT 인덱스를 생성하려면:

ALTER TABLE table_name ADD FULLTEXT index_name(column_list);

FULLTEXT 인덱스는 텍스트 검색 목적으로 사용할 수 있습니다.

기존 테이블에서

기존 테이블에 인덱스를 추가하려면 다음 구문을 사용할 수 있습니다.

ALTER TABLE table_name ADD INDEX(인덱스 이름);

테이블에서 인덱스를 삭제하려면 DROP INDEX 문을 사용합니다.

ALTER TABLE 테이블명 DROP INDEX(인덱스명);

인덱스 정보 표시

테이블과 관련된 모든 인덱스를 나열하려면 SHOW INDEX 명령이 사용됩니다.

table_name\G에서 인덱스 표시

'\G'는 세로 형식으로 목록을 만드는 데 사용되며 긴 줄 바꿈을 방지합니다.

또한 읽기: SQL 인터뷰 질문 및 답변

내림차순 인덱스

InnoDB는 인덱스가 내림차순 인덱스일 때 항목을 내림차순으로 저장할 수 있습니다. 따라서 쿼리에서 내림차순을 요청할 때 옵티마이저는 이 인덱스를 선택합니다. 이것은 ORDER BY 절이 있는 쿼리에 더 효율적입니다. 이는 InnoDB 스토리지 엔진에서만 지원됩니다.

내림차순 인덱스를 생성하거나 추가하는 구문은 위에서 사용한 alter 또는 create 구문과 같습니다.

ALTER TABLE table_name ADD index_name(col1_name desc, col2_name asc);

CREATE INDEX index_name ON table_name(col1_name desc, col2_name asc);

보이지 않는 인덱스

인덱스를 쿼리 최적화 프로그램에 사용할 수 없는 것으로 표시하려면 보이지 않는 인덱스를 사용할 수 있습니다. MySQL은 인덱스와 관련된 열의 데이터가 변경될 때 보이지 않는 인덱스를 업데이트합니다. 인덱스는 기본적으로 표시되며 보이지 않게 하려면 생성 시 또는 ALTER TABLE 명령을 사용하여 명시적으로 가시성을 선언해야 합니다.

보이지 않는 인덱스를 만들려면 다음 구문이 사용됩니다.

CREATE INDEX index_name ON table_name (c1, c2…) INVISIBLE;

기존 인덱스의 가시성을 변경하려면 다음 구문이 사용됩니다.

ALTER TABLE 테이블 이름 ALTER INDEX 인덱스 이름 [VISIBLE | 보이지 않는];

세계 최고의 대학 에서 온라인 소프트웨어 개발 과정 에 등록하십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

결론

인덱스를 사용하여 MySQL 검색 쿼리의 성능을 향상시킬 수 있습니다. 테이블 생성 시 정의하거나 테이블이 이미 생성된 경우 나중에 추가할 수 있습니다.

이 기사에서는 색인이 무엇인지, 색인이 사용되는 이유에 대해 간략하게 설명했습니다. 다음 섹션에서는 MySQL에서 인덱스를 생성 하는 방법, 기존 테이블에 인덱스를 추가하는 방법 및 고유 인덱스를 생성하는 방법에 대해 설명합니다.

테이블을 변경하고 인덱스를 생성 또는 삭제하는 다양한 명령도 인덱스 정보 표시와 함께 설명되었습니다. 내림차순 및 보이지 않는 인덱스도 간략하게 설명했습니다.

대체로 이 기사에서 언급한 모든 데이터베이스에 대해 배우고 실습하면 경험이 더해질 것입니다. 과정 개요, 학습 및 이와 관련된 취업 기회를 살펴보십시오. upGrad와 같은 플랫폼은 Executive PG Program Full Stack Development에서 IIIT-B와 같은 유명 기관에서 설계한 강력한 과정을 제공합니다.

미래의 직업을 위한 준비

지금 소프트웨어 공학 석사 지원