MySQL 재구축 인덱스
- MySQL 재구축 색인
-
REINDEX
를 사용하여INDEXES
재구축 -
REPAIR TABLE
방법을 사용하여INDEXES
재구축 -
InnoDB
와 함께ALTER TABLE
방법을 사용하여INDEXES
재구축
이 자습서는 MySQL에서 인덱스를 다시 빌드하는 방법을 보여줍니다.
MySQL 재구축 색인
MySQL은 MySQL의 인덱스나 테이블이 변경될 수 있도록 데이터 유형과 문자를 처리합니다. 이것이 때때로 우리가 MySQL에서 인덱스를 재구축해야 하는 이유입니다.
인덱스를 재구축하는 몇 가지 방법이 있으며 그 중 일부는 전체 데이터베이스 또는 REINDEX
만 인덱스를 재구축하는 데 사용할 수 있는 MySQL의 데이터 구조인 테이블을 복구하거나 재구축합니다.
REINDEX
를 사용하여 하나 이상의 열에 대한 인덱스를 재구축하여 테이블 성능을 개선하고 데이터에 빠르게 액세스할 수 있습니다.
데이터베이스가 손상되었거나 복구가 필요할 때마다 REINDEX
를 사용하여 인덱스를 재구축하거나 데이터베이스 또는 테이블을 복구해야 합니다.
PRIMARY KEY
, UNIQUE
, INDEX
, FULLTEXT
및 REINDEX
를 포함한 대부분의 MySQL 인덱스는 데이터를 저장하기 위한 자체 균형 데이터 구조 트리인 B-트리에 저장됩니다. 특별한 방식으로.
REINDEX
를 사용하여 인덱스를 재구축하거나 데이터베이스 또는 테이블을 재구축하기 전에 먼저 테이블과 인덱스가 있는 데이터베이스를 생성해야 합니다. 이 자습서는 MySQL에서 인덱스를 다시 빌드하는 데 사용되는 다양한 방법을 보여줍니다.
테이블 및 인덱스 생성
이제 REINDEX
를 사용하여 인덱스를 재구축하는 예제를 시도해 보겠습니다. 그러나 인덱스를 재구축하기 전에 먼저 인덱스를 만들어야 하므로 시작하겠습니다.
-
먼저 인덱스를 생성하는 구문은 다음과 같습니다.
CREATE INDEX [IndexName] ON [TableName] ([ColumnName]);
-
이제 테이블을 만들어 봅시다
create table Employee(id integer, name varchar(100), position varchar(100)); insert into Employee(id, name, position) values(1, "Sheeraz", "SeniorDeveloper"); insert into Employee(id, name, position) values(2, "John", "SeniorDeveloper"); insert into Employee(id, name, position) values(3, "Jack", "JuniorDeveloper"); select * from Employee;
위의 코드는 3개의 행과 3개의 열이 있는 테이블을 생성합니다. 출력을 참조하십시오.
id name position 1 Sheeraz SeniorDeveloper 2 John SeniorDeveloper 3 Jack JuniorDeveloper
-
position
에는SeniorDeveloper
가 둘 이상 있습니다. 위치에 따라 데이터를 선택하고 설명할 수도 있습니다.예를 참조하십시오.
SELECT id, name FROM Employee WHERE Position= "SeniorDeveloper"; EXPLAIN SELECT id, name FROM Employee WHERE Position= "SeniorDeveloper";
첫 번째 쿼리는 위치가
SeniorDeveloper
인 데이터를 선택하고 두 번째 쿼리는 MySQL이 이를 수행하는 방법을 설명합니다. 출력을 참조하십시오.id name 1 Sheeraz 2 John id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE Employee NULL ALL NULL NULL NULL NULL 3 33.33 Using where
-
이제 보시다시피 테이블에 시니어 개발자가 한 명 이상 있으므로 해당 열에 대한 인덱스를 만든 다음 위의 쿼리를 설명하여 차이점을 확인합니다. 예를 참조하십시오.
CREATE INDEX position ON Employee(Position); EXPLAIN SELECT id, name FROM Employee WHERE Position= "SeniorDeveloper";
지금 인덱스를 생성한 후
explain
쿼리의 출력은 다음과 같습니다.id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE Employee NULL ref position position 403 const 1 100.00 NULL
보시다시피
possible_keys
유형은position
인덱스를 생성한 후position
으로 변경됩니다. 키도 할당됩니다. 다음 쿼리로 인덱스를 표시할 수도 있습니다.SHOW INDEXES FROM Employee;
이 쿼리의 출력은 다음과 같습니다.
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression Employee 1 position 1 position A NULL NULL NULL YES BTREE YES NULL
REINDEX
를 사용하여 INDEXES
재구축
이제 어떤 경우든 인덱스를 생성한 후 데이터베이스나 테이블이 손상되면 REINDEX
를 사용하여 인덱스를 재구축할 수 있으므로 메모리를 줄이고 IO 효율성을 높이는 데 도움이 됩니다.
REINDEX
의 구문은 다음과 같습니다.
# To REINDEX the whole database
REINDEX DATABASE [DatabaseName];
# To REINDEX the Table
REINDEX TABLE [TableName];
# To REINDEX the Particular column
REINDEX TABLE [TableName]([ColumnName);
# To REINDEX the INDEX
REINDEX INDEX [Index_Name];
여기에서 REINDEX
또는 OPTIMIZE
를 사용하여 손상된 인덱스를 재구축할 수 있습니다. 예를 참조하십시오.
REINDEX TABLE Employee(position);
SHOW INDEXES FROM Employee;
또는:
OPTIMIZE TABLE Employee;
SHOW INDEXES FROM Employee;
위의 두 쿼리 모두 테이블의 인덱스를 다시 빌드합니다.
출력:
Table Op Msg_type Msg_text
test.Employee optimize status OK
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression
Employee 1 position 1 position A 1 NULL NULL YES BTREE YES NULL
REPAIR TABLE
방법을 사용하여 INDEXES
재구축
REINDEX
외에도 전체 테이블을 복구할 수 있으며 테이블의 인덱스도 다시 빌드합니다. 이를 수행하는 간단한 쿼리가 있습니다.
REPAIR TABLE Employee;
SHOW INDEXES FROM Employee;
위의 코드는 테이블을 복구하고 인덱스를 다시 빌드한 다음 인덱스 정보를 표시합니다. 출력을 참조하십시오.
Table Op Msg_type Msg_text
test.Employee repair status OK
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression
Employee 1 position 1 position A 1 NULL NULL YES BTREE YES NULL
InnoDB
와 함께 ALTER TABLE
방법을 사용하여 INDEXES
재구축
또한 ALTER TABLE
쿼리를 사용하여 InnoDB
엔진을 사용하여 손상된 테이블과 인덱스를 재구축할 수 있습니다. 다음은 이를 수행하는 간단한 쿼리입니다.
ALTER TABLE Employee ENGINE = InnoDB;
SHOW INDEXES FROM Employee;
코드는 ALTER
를 사용하여 InnoDB
엔진을 사용하여 테이블과 인덱스를 다시 빌드합니다.
출력:
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression
Employee 1 position 1 position A 2 NULL NULL YES BTREE YES NULL
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook