Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

여러 열로 구성된 UNIQUE 인덱스를 만들려면 어떻게 해야 합니까?

<시간/>

여러 열의 UNIQUE 인덱스를 만들려면 둘 이상의 열에 인덱스 이름을 지정해야 합니다. 다음 예는 'employee' 테이블의 'empid', 'first_name', 'last_name' 열에 'id_fname_lname'이라는 다중 열 인덱스를 생성합니다. −

mysql> Create UNIQUE INDEX id_fname_lname on employee(empid,first_name,last_name);
Query OK, 0 rows affected (0.41 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> describe employee;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| empid | int(11) | YES | MUL | NULL | |
| first_name | varchar(20) | YES | | NULL | |
| last_name | varchar(20) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
3 rows in set (0.12 sec)

위 쿼리의 결과 집합을 보면 테이블에 다중 인덱스가 정의되어 있음을 알 수 있다. 인덱스에 대한 세부 정보를 잊어버리면 다음 쿼리를 실행할 수 있습니다. -

mysql> Show index from employee\G
*************************** 1. row ***************************
Table: employee
Non_unique: 0
Key_name: id_fname_lname
Seq_in_index: 1
Column_name: empid
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
*************************** 2. row ***************************
Table: employee
Non_unique: 0
Key_name: id_fname_lname
Seq_in_index: 2
Column_name: first_name
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
*************************** 3. row ***************************
Table: employee
Non_unique: 0
Key_name: id_fname_lname
Seq_in_index: 3
Column_name: last_name
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
3 rows in set (0.00 sec)

위의 결과 집합에서 테이블의 모든 열에 대해 다중 열 인덱스를 생성했기 때문에 'key_name' 필드의 값이 동일함을 알 수 있습니다.