반응형
UNIQURE 제약조건은 필드에 INDEX를 자동으로 생성합니까?
에 별도의 인덱스를 정의해야 합니까?email
컬럼(검색용) 또는 인덱스가 다음과 같이 "자동으로" 추가됩니까?UNIQ_EMAIL_USER
제약이 있습니까?
CREATE TABLE IF NOT EXISTS `customer` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`first` varchar(255) NOT NULL,
`last` varchar(255) NOT NULL,
`slug` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `UNIQ_SLUG` (`slug`),
UNIQUE KEY `UNIQ_EMAIL_USER` (`email`,`user_id`),
KEY `IDX_USER` (`user_id`)
) ENGINE=InnoDB;
EDIT: Corbin i가 쿼리한 내용EXPLAIN SELECT * FROM customer WHERE email = 'address'
빈 테이블 위에결과는 이렇습니다. 어떻게 해석해야 할지 모르겠습니다.
id select_type type possible_keys key key_len ref rows Extra
1 SIMPLE ALL NULL NULL NULL NULL 1 Using where
테이블에 IXD_EMAIL을 추가할 때 동일한 쿼리에 다음과 같이 표시됩니다.
id select_type type possible_keys key key_len ref rows Extra
1 SIMPLE ref IDX_EMAIL IDX_EMAIL 257 const 1 Using where
고유 키는 인덱스의 특수한 경우로, 고유성 검사가 추가된 일반 인덱스처럼 작동합니다.사용.SHOW INDEXES FROM customer
고유한 키가 실제로 B-트리 유형의 인덱스임을 알 수 있습니다.
복합 인덱스:(email, user_id)
e-메일에만 별도의 인덱스가 필요하지 않습니다. MySQL은 복합 인덱스의 가장 왼쪽 부분을 사용할 수 있습니다.인덱스의 크기로 인해 쿼리가 느려질 수 있는 경계선이 있을 수 있지만 실제로 마주칠 때까지는 걱정하지 마십시오.
인덱스 사용 테스트에 대해서는 먼저 테이블을 몇 가지 데이터로 채우고 옵티마이저가 인덱스를 실제로 사용할 가치가 있다고 생각하게 해야 합니다.
언급URL : https://stackoverflow.com/questions/9764120/does-a-unique-constraint-automatically-create-an-index-on-the-fields
반응형
'source' 카테고리의 다른 글
Algid 구문 분석 오류, 시퀀스가 아닙니다. (0) | 2022.10.14 |
---|---|
Javascript에서 선택할 옵션 추가 (0) | 2022.10.13 |
Google Chrome에서 JavaScript 디버거를 시작하려면 어떻게 해야 합니까? (0) | 2022.10.13 |
PHP를 사용하여 두 날짜의 차이를 계산하는 방법은 무엇입니까? (0) | 2022.10.13 |
PHP에서 시간 차이를 분 단위로 가져오는 방법 (0) | 2022.10.13 |