>데이터 베이스 >MySQL 튜토리얼 >MySQL이 인덱스를 생성하는 방법에 대한 자세한 설명(사례)

MySQL이 인덱스를 생성하는 방법에 대한 자세한 설명(사례)

coldplay.xixi
coldplay.xixi앞으로
2021-03-24 09:59:575478검색

MySQL이 인덱스를 생성하는 방법에 대한 자세한 설명(사례)

사례: index_test 데이터베이스를 생성하고, 다음 표의 구조에 따라 index_test 데이터베이스에 test_table1, test_table2 두 개의 데이터 테이블을 생성하고, 연산 프로세스에 따라 데이터 테이블에 대한 기본 연산을 완료합니다.

(1) MySQL 데이터베이스에 로그인
(2) 데이터베이스 index_test 생성
(3) test_table1 테이블 생성
(4) test_table2 테이블 생성, 스토리지 엔진은 MyISAM
(5) alter table 문 사용 test_table2 테이블의 생성 필드를 생성하려면 ComDateIdx라는 일반 인덱스
(6) alter table 문을 사용하여 test_table2 테이블의 id 필드에 UniqIdx2라는 고유 인덱스를 추가하고 내림차순으로 정렬합니다.
(7) create 사용 이름, 중간 이름, 성의 세 필드에 대한 인덱스 MultiColidx2라는 결합 인덱스 생성
(8) create index를 사용하여 제목 필드에 FTidx라는 전체 텍스트 인덱스 생성
(9) alter table 문을 사용하여 고유한 인덱스를 삭제 test_table1 테이블의 Uniqidx라는 인덱스
(10) drop index 문을 사용하여 test_table2 테이블의 MultiColidx2라는 결합 인덱스를 삭제합니다. 몇 가지 참고 사항

(무료 학습 권장 사항:mysql 비디오 튜토리얼)


(1) MySQL 데이터베이스에 로그인
C:\Users\Hudie>mysql -h localhost -u root -p
Enter password: *******
(2) 데이터베이스 생성 index_test
mysql> create database index_test;Query OK, 1 row affected (0.06 sec)mysql> use index_test;Database changed
(3) 테이블 생성 test_table1
mysql> create table test_table1    -> (
    -> id int not null primary key auto_increment,
    -> name char(100) not null,
    -> address char(100) not null,
    -> description char(100) not null,
    -> unique index uniqidx(id),
    -> index MultiColidx(name(20),address(30) ),
    -> index Comidx(description(30))
    -> );Query OK, 0 rows affected (0.11 sec)mysql> show create table test_table1 \G*************************** 1. row ***************************
       Table: test_table1Create Table: CREATE TABLE `test_table1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(100) NOT NULL,
  `address` char(100) NOT NULL,
  `description` char(100) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniqidx` (`id`),
  KEY `MultiColidx` (`name`(20),`address`(30)),
  KEY `Comidx` (`description`(30))) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1 row in set (0.06 sec)
test_table 테이블에 3개의 인덱스가 성공적으로 생성된 것을 확인할 수 있습니다. id 필드에 uniqidx라는 고유 인덱스가 있고, 설명 필드에 길이가 30인 일반 인덱스가 있습니다.

(4) test_table2 테이블을 생성합니다. 스토리지 엔진은 MyISAM
mysql> create table test_table2    -> (
    -> id int not null primary key auto_increment,
    -> firstname char(100) not null,
    -> middlename char(100) not null,
    -> lastname char(100) not null,
    -> birth date not null,
    -> title char(100) null
    -> )ENGINE=MyISAM;Query OK, 0 rows affected (0.07 sec)
입니다.(5) alter table 문을 사용하여 test_table2
mysql> alter table test_table2 add index ComDateidx(birth);Query OK, 0 rows affected (0.13 sec)Records: 0  Duplicates: 0  Warnings: 0
테이블의 생성 필드에 ComDateIdx라는 공통 인덱스를 생성합니다.(6) alter를 사용합니다. test_table2 테이블의 출생 필드에 공통 인덱스를 생성하는 table 문 id 필드에 Uniqidx2라는 고유 인덱스를 추가합니다
mysql> alter table test_table2 add unique index Uniqidx(id);Query OK, 0 rows affected (0.11 sec)Records: 0  Duplicates: 0  Warnings: 0
(7) create index를 사용하여 이름 및 중간 이름 필드에 MultiColidx2라는 결합 인덱스를 생성합니다
mysql>  create index MultiColidx2 on test_table2(firstname,middlename);Query OK, 0 rows affected (0.12 sec)Records: 0  Duplicates: 0  Warnings: 0
(8) create index를 사용하여 제목 필드에 이름을 만듭니다. FTidx
mysql> create fulltext index ftidx on test_table2(title);Query OK, 0 rows affected (0.13 sec)Records: 0  Duplicates: 0  Warnings: 0
의 전체 텍스트 인덱스의 경우(9) alter table 문을 사용하여 test_table1
mysql> alter table test_table1 drop index uniqidx;Query OK, 0 rows affected (0.09 sec)Records: 0  Duplicates: 0  Warnings: 0
테이블에서 Uniqidx라는 고유 인덱스를 삭제합니다(10). drop index 문을 사용하여 test_table2
mysql> drop index MultiColidx2 on test_table2;Query OK, 0 rows affected (0.12 sec)Records: 0  Duplicates: 0  Warnings: 0
테이블에서 MultiColidx2라는 결합 인덱스를 삭제합니다. 몇 가지 참고 사항:
1. 인덱스는 데이터베이스 성능에 매우 중요합니다. 어떻게 사용합니까?

    인덱스 열의 열 수가 적으면 필요한 디스크 공간과 유지 관리 오버헤드가 줄어듭니다.
  • 큰 테이블에 여러 개의 결합된 인덱스가 생성되면 인덱스 파일도 빠르게 확장됩니다. 또한 더 많은 쿼리를 처리할 수 있는 더 많은 인덱스가 있습니다.
  • 데이터베이스 스키마나 애플리케이션 디자인에 영향을 주지 않고 인덱스를 추가, 삭제, 수정해 보세요.
2. 문자열 유형 필드의 색인을 생성하려면 짧은 색인

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

관련 무료 학습 권장 사항: mysql 데이터베이스(동영상)

위 내용은 MySQL이 인덱스를 생성하는 방법에 대한 자세한 설명(사례)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제