mysql에서는 "CREATE INDEX" 문을 사용하여 인덱스를 볼 수 있으며, "DROP INDEX" 문을 사용하여 인덱스를 삭제하고 수정할 수 있습니다. 원본 인덱스를 만든 다음 필요에 따라 동일한 이름의 인덱스를 생성하여 인덱스를 수정하는 작업을 구현합니다.
(권장 튜토리얼: mysql 비디오 튜토리얼)
mysql 인덱스 생성
인덱스 생성은 테이블의 하나 이상의 열에 인덱스를 설정하는 것을 의미하며, 이는 성능을 향상시킬 수 있습니다. 테이블 접근 속도. MySQL 데이터베이스를 효율적으로 운영하려면 인덱스를 생성하는 것이 중요합니다.
기본 구문
MySQL은 인덱스를 생성하는 세 가지 방법을 제공합니다.
1) CREATE INDEX 문 사용
특히 인덱스 생성을 위해 CREATE INDEX 문을 사용하여 기존 테이블에 인덱스를 생성할 수 있지만 이 명령문은 기본 키를 생성할 수 없습니다.
구문 형식:
CREATE <索引名> ON <表名> (<列名> [<长度>] [ ASC | DESC])
구문 설명은 다음과 같습니다.
<테이블 이름>: 인덱스를 생성할 테이블의 이름을 지정합니다.
<열 이름>: 인덱스를 생성할 열 이름을 지정합니다. 일반적으로 쿼리 문의 JOIN 절과 WHERE 절에 자주 나타나는 열을 인덱스 열로 사용하는 것을 고려할 수 있습니다.
<길이>: 선택사항. 열 앞의 길이 문자를 사용하여 인덱스를 생성하도록 지정합니다. 열의 일부를 사용하여 인덱스를 생성하면 인덱스 파일의 크기를 줄이고 인덱스 열이 차지하는 공간을 절약하는 데 도움이 됩니다. 어떤 경우에는 열의 접두사만 인덱싱할 수 있습니다. 인덱스 열의 길이는 최대 255바이트(MyISAM 및 InnoDB 테이블의 경우 1000바이트)로 제한됩니다. 인덱스 열의 길이가 이 제한을 초과하는 경우 해당 열의 접두사를 통해서만 인덱싱할 수 있습니다. 또한 BLOB 또는 TEXT 유형의 열은 접두사 인덱스도 사용해야 합니다.
ASC|DESC: 선택사항. ASC는 인덱스가 오름차순으로 정렬되도록 지정하고, DESC는 인덱스가 내림차순으로 정렬되도록 지정하며 기본값은 ASC입니다.
2) CREATE TABLE 문 사용
테이블 생성(CREATE TABLE) 중에도 인덱스를 생성할 수 있습니다. CREATE TABLE 문에 다음 문을 추가합니다. 구문 형식:
CONSTRAINT PRIMARY KEY [索引类型] (<列名>,…)
CREATE TABLE 문에 이 문을 추가하여 새 테이블을 생성하는 동안 테이블의 기본 키가 생성됨을 나타냅니다.
구문 형식:
KEY | INDEX [<索引名>] [<索引类型>] (<列名>,…)
새 테이블을 생성하는 동안 테이블에 대한 인덱스를 생성하려면 CREATE TABLE 문에 이 문을 추가하세요.
구문 형식:
UNIQUE [ INDEX | KEY] [<索引名>] [<索引类型>] (<列名>,…)
새 테이블을 생성하는 동안 테이블에 대한 고유 인덱스를 생성하려면 CREATE TABLE 문에 이 문을 추가하세요.
구문 형식:
FOREIGN KEY <索引名> <列名>
새 테이블을 생성하는 동안 테이블에 대한 외래 키를 생성하려면 CREATE TABLE 문에 이 문을 추가하세요.
CREATE TABLE 문을 사용하여 열 옵션을 정의할 때 열 정의 바로 뒤에 PRIMARY KEY를 추가하여 기본 키를 생성할 수 있습니다. 기본 키가 여러 열로 구성된 다중 열 인덱스인 경우 이 방법을 사용할 수 없으며 명령문 끝에 PRIMARY KRY(<열 이름>,...) 절을 추가해야만 구현할 수 있습니다. .
3) ALTER TABLE 문을 사용하세요.
CREATE INDEX 문으로 기존 테이블에 인덱스를 생성할 수 있고, ALTER TABLE 문으로도 기존 테이블에 인덱스를 생성할 수 있습니다. ALTER TABLE 문을 사용하여 테이블을 수정하는 동안 기존 테이블에 인덱스를 추가할 수 있습니다. 구체적인 방법은 다음 구문 구성 요소 중 하나 이상을 ALTER TABLE 문에 추가하는 것입니다.
구문 형식:
ADD INDEX [<索引名>] [<索引类型>] (<列名>,…)
테이블을 수정하는 동안 테이블에 인덱스를 추가하려면 ALTER TABLE 문에 이 구문 구성 요소를 추가하세요.
구문 형식:
ADD PRIMARY KEY [<索引类型>] (<列名>,…)
테이블을 수정하는 동안 테이블에 기본 키를 추가하려면 ALTER TABLE 문에 이 구문 구성 요소를 추가하세요.
구문 형식:
ADD UNIQUE [ INDEX | KEY] [<索引名>] [<索引类型>] (<列名>,…)
테이블을 수정하는 동안 테이블에 고유 인덱스를 추가하려면 ALTER TABLE 문에 이 구문 구성 요소를 추가하세요.
구문 형식:
ADD FOREIGN KEY [<索引名>] (<列名>,…)
테이블을 수정하는 동안 테이블에 외래 키를 추가하려면 ALTER TABLE 문에 이 구문 구성 요소를 추가하세요.
mysql 인덱스 보기
인덱스가 생성된 후 SQL 문을 사용하여 기존 인덱스를 볼 수 있습니다. MySQL에서는 SHOW INDEX 문을 사용하여 테이블에 생성된 인덱스를 볼 수 있습니다.
인덱스를 보기 위한 구문 형식은 다음과 같습니다.
SHOW INDEX FROM <表名> [ FROM <数据库名>]
구문 설명은 다음과 같습니다.
<테이블 이름>: 인덱스를 보려는 데이터 테이블의 이름을 지정합니다.
<데이터베이스 이름>: 조회하려는 데이터 테이블이 위치한 데이터베이스를 인덱스로 지정하며, 생략 가능합니다. 예를 들어, SHOW INDEX FROM Student FROM test; 문은 테스트 데이터베이스에 있는 학생 데이터 테이블의 인덱스를 보는 것을 의미합니다.
Example
SQL문과 실행 결과는 아래와 같습니다.
mysql> SHOW INDEX FROM tb_stu_info2\G *************************** 1. row *************************** Table: tb_stu_info2 Non_unique: 0 Key_name: height Seq_in_index: 1 Column_name: height Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: 1 row in set (0.03 sec)
MySQL 인덱스 수정 및 삭제
删除索引是指将表中已经存在的索引删除掉。不用的索引建议进行删除,因为它们会降低表的更新速度,影响数据库的性能。对于这样的索引,应该将其删除。
在 MySQL 中修改索引可以通过删除原索引,再根据需要创建一个同名的索引,从而实现修改索引的操作。
基本语法
当不再需要索引时,可以使用 DROP INDEX 语句或 ALTER TABLE 语句来对索引进行删除。
1) 使用 DROP INDEX 语句
语法格式:
DROP INDEX <索引名> ON <表名>
语法说明如下:
<索引名>:要删除的索引名。
<表名>:指定该索引所在的表名。
2) 使用 ALTER TABLE 语句
根据 ALTER TABLE 语句的语法可知,该语句也可以用于删除索引。具体使用方法是将 ALTER TABLE 语句的语法中部分指定为以下子句中的某一项。
DROP PRIMARY KEY:表示删除表中的主键。一个表只有一个主键,主键也是一个索引。
DROP INDEX index_name:表示删除名称为 index_name 的索引。
DROP FOREIGN KEY fk_symbol:表示删除外键。
注意:如果删除的列是索引的组成部分,那么在删除该列时,也会将该列从索引中删除;如果组成索引的所有列都被删除,那么整个索引将被删除。
删除索引
【实例 1】删除表 tb_stu_info 中的索引,输入的 SQL 语句和执行结果如下所示。
mysql> DROP INDEX height -> ON tb_stu_info; Query OK, 0 rows affected (0.27 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> SHOW CREATE TABLE tb_stu_info\G *************************** 1. row *************************** Table: tb_stu_info Create Table: CREATE TABLE `tb_stu_info` ( `id` int(11) NOT NULL, `name` char(45) DEFAULT NULL, `dept_id` int(11) DEFAULT NULL, `age` int(11) DEFAULT NULL, `height` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 1 row in set (0.00 sec)
【实例 2】删除表 tb_stu_info2 中名称为 id 的索引,输入的 SQL 语句和执行结果如下所示。
mysql> ALTER TABLE tb_stu_info2 -> DROP INDEX height; Query OK, 0 rows affected (0.13 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> SHOW CREATE TABLE tb_stu_info2\G *************************** 1. row *************************** Table: tb_stu_info2 Create Table: CREATE TABLE `tb_stu_info2` ( `id` int(11) NOT NULL, `name` char(45) DEFAULT NULL, `dept_id` int(11) DEFAULT NULL, `age` int(11) DEFAULT NULL, `height` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 1 row in set (0.00 sec)
위 내용은 mysql 인덱스의 추가, 삭제, 수정 및 쿼리를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!