MySQL은 외래 키 열을 자동으로 색인합니까?
MySQL은 외래 키 열을 자동으로 색인합니까?
예, 그러나 innodb 에서만 가능합니다 . Innodb는 현재 외래 키가 구현 된 유일한 배송 테이블 형식입니다.
robert이 게시 한 링크에 지정된대로 인덱스가 자동으로 생성됩니다 .
InnoDB는 외래 키 검사가 빠르며 테이블 스캔이 필요하지 않도록 외래 키 및 참조 키에 대한 인덱스가 필요합니다. 참조 테이블에는 외래 키 열이 동일한 순서로 첫 번째 열로 나열되는 인덱스가 있어야합니다. 이러한 색인은 참조 테이블에 존재하지 않으면 자동으로 작성됩니다. (이는 인덱스를 명시 적으로 작성했거나 외래 키 제약 조건을 작성하지 못한 일부 이전 버전과 대조적입니다.) 제공된 경우 index_name이 앞에서 설명한대로 사용됩니다.
예, InnoDB 및 FOREIGN KEY 제약 조건을 참조하십시오 .
적어도 문서 에 따라 ALTER TABLE (CREATE TABLE 대신)을 수행 하면 링크가 5.1이지만 링크는 5.1이지만 색인은 자동으로 인덱스를 얻지 못합니다 .
[...] ALTER TABLE을 사용하여 외래 키 제약 조건을 테이블에 추가 할 때는 필요한 인덱스를 먼저 만들어야합니다.
5.7
문서 에서 인용문을 찾는 사람들을 위해 :
MySQL은 외래 키 및 참조 키에 대한 인덱스를 요구하므로 외래 키 검사가 빠르며 테이블 스캔이 필요하지 않습니다. 참조 테이블에는 외래 키 열이 동일한 순서로 첫 번째 열로 나열되는 인덱스가 있어야합니다. 이러한 색인은 참조 테이블에 존재하지 않으면 자동으로 작성됩니다. 외래 키 제약 조건을 적용하는 데 사용할 수있는 다른 인덱스를 만들면이 인덱스가 나중에 자동으로 삭제 될 수 있습니다. 주어진 경우 index_name이 앞에서 설명한대로 사용됩니다.
명시된 바와 같이 InnoDB에 적용됩니다. 처음에는 다른 많은 (특히 MS SQL 및 DB2)이 그렇지 않은 것이 이상하다고 생각했습니다. 테이블 스페이스 스캔은 테이블 행이 거의없는 경우 인덱스 스캔보다 낫습니다. 따라서 대부분의 경우 외래 키를 인덱싱하려고합니다. 그런 다음 필자가 일종의 히트를 쳤다-이것이 반드시 독립형 (한 열) 인덱스 여야한다는 것을 의미하지는 않습니다-MySQL의 자동 FK 인덱스에 있습니다. 따라서 이것이 MS SQL, DB2 (Oracle I 'm 모르겠 음) 등이 DBA에 맡겨지는 이유 일 수 있습니다. 큰 테이블의 여러 인덱스가 모두 성능 및 공간에 문제를 일으킬 수 있습니다.
예, Innodb
이것을 제공하십시오. FOREIGN KEY
절 뒤에 외래 키 이름을 넣거나 MySQL에서 이름을 만들 수 있도록 남겨 둘 수 있습니다. MySQL은 자동으로 foreign_key_name
이름을 가진 인덱스를 만듭니다 .
CONSTRAINT constraint_name
FOREIGN KEY foreign_key_name (columns)
REFERENCES parent_table(columns)
ON DELETE action
ON UPDATE action
인덱스 키를 자동으로 사용할 수 없습니다
ALTER TABLE (NAME OF THE TABLE) ADD INDEX (FOREIGN KEY)
예를 들어 사진과 같은 FOREIGN KEY와 같이 생성 한 테이블의 이름입니다 photograph_id
. 코드는 다음과 같아야합니다
ALTER TABLE photographs ADD INDEX (photograph_id);
참고 : https://stackoverflow.com/questions/304317/does-mysql-index-foreign-key-columns-automatically
'Programing' 카테고리의 다른 글
TypeScript의 "* .d.ts"정보 (0) | 2020.04.12 |
---|---|
datetime.datetime.utcnow ()에 시간대 정보가없는 이유는 무엇입니까? (0) | 2020.04.12 |
Oracle에서 varchar와 varchar2의 차이점은 무엇입니까? (0) | 2020.04.12 |
0.0.0.0, 127.0.0.1과 localhost의 차이점은 무엇입니까? (0) | 2020.04.12 |
Java에서 null은 무엇입니까? (0) | 2020.04.12 |