외래 키 정의는 인덱스를 정의합니까? 나는 mysql을 가지고있다 v5.1.46 & 나는 MySQL 관리자 도구를보고 그 색인에 외래 키를 보여 주므로 확인하고 싶었다.MySQL 외래 키 질문
6
A
답변
3
예, MySQL 5.1은 외래 키 제약 조건을 정의 할 때 참조하는 테이블에 인덱스를 자동으로 생성합니다. MySQL은 외부 키에 대해 참조하는 테이블과 참조 된 테이블 모두에 인덱스를 요구합니다.
그러나 인덱스는 참조 테이블에서 만 자동으로 만들어지고 참조 테이블에서는 생성되지 않습니다.
CREATE TABLE orders (
id int PRIMARY KEY,
code int,
name varchar(10)
) ENGINE=INNODB;
CREATE TABLE order_details (
detail_id int PRIMARY KEY,
order_code int,
value int,
FOREIGN KEY (order_code) REFERENCES orders(code)
) ENGINE=INNODB;
ERROR 1005 (HY000): Can't create table 'test.order_details'
자주 참조하는 외래 키 제약 조건을 생성 할 것 때문에 이것은 매우 흔한되지 않습니다 : MySQL은 당신이 인덱스를 사용할 수 없습니다 참조 된 테이블에서 필드를 참조하는 외래 키를 만들 수 없습니다 참조 된 테이블의 기본 키 및 기본 키는 자동으로 인덱싱됩니다. 그러나 아마도 염두에 두어야 할 가치가 있습니다. 문제를 해결할 것 orders
테이블의 code
필드에 인덱스를 생성
:
CREATE INDEX ix_orders_code ON orders(code);
8
- 이미 사용 가능한 인덱스 (외래 키 열이 첫 번째 열로 나열되어 인덱스가있는 경우 같은 순서로), 새로운 인덱스는 생성되지 않습니다.
- 사용할 수있는 색인이없는 경우 외래 키를 작성하면 색인도 작성됩니다.
이 내용은 documentation에 있습니다.
InnoDB는 외래 키 검사가 빠르며 테이블 스캔이 필요하지 않도록 외래 키와 참조 키에 대한 인덱스가 필요합니다. 참조하는 테이블에는 외부 키 열이 같은 순서로 첫 번째 열로 나열되는 인덱스가 있어야합니다. 이러한 인덱스는 참조 테이블에 자동으로 작성됩니다 (존재하지 않는 경우). (인덱스를 명시 적으로 생성해야하거나 이전 버전의 외래 키 제약 조건 생성에 실패하는 이전 버전과는 대조적입니다.) index_name은 이전에 설명한대로 사용됩니다.
관련 문제
- 1. MySQL 외래 키 문제
- 2. 외래 키 문제 - mysql
- 3. Mysql 외래 키 딜레마
- 4. MySQL - 고유 외래 키
- 5. 테이블 외래 키에 대한 MySQL 외래 키
- 6. RoR : 기본 외래 키 질문
- 7. 외래 키, 관계에 관한 질문
- 8. Oracle 복합 기본 키/외래 키 질문
- 9. MySQL 일부 외래 키 제거
- 10. 전체 테이블을위한 mysql 외래 키
- 11. MySQL 외래 키 : 내가 설정해야합니까?
- 12. 외래 키 및 MySQL 오류
- 13. 기존 데이터의 MySQL 외래 키
- 14. MySQL Workbench의 외래 키 처리
- 15. 외래 키 생성에서의 MySQL 구문
- 16. mysql 외래 키 엔트리를위한 복수 키
- 17. MySQL 키 질문
- 18. MYSQL 외래 키와 고아 행에 관한 질문
- 19. 엔티티 프레임 워크 4.1 외래 키 질문
- 20. Linq에서 SQL에 외래 키 관계에 대한 질문
- 21. MySQL의 외래 키 문제는 여기에 외래 키 또한 뭐가 문제
- 22. MySQL 외래 키 제약 조건, 캐스케이드 삭제
- 23. MySQL : 많은 조인 또는 추가 외래 키?
- 24. mysql 삭제 및 외래 키 제약
- 25. mysql 데이터베이스에서 외래 키 값을 업데이트하는 방법
- 26. 다른 데이터베이스에있는 테이블의 MySQL 외래 키?
- 27. 장고가 MySQL 백엔드 용 외래 키 만들기
- 28. MySQL : 두 부모를 참조하는 외래 키
- 29. MySQL 조건부 드롭 외래 키 스크립트
- 30. MySQL 외래 키 자동 생성 이름이 결정적입니까?
설명서의 오래된 링크가 수정되었습니다. –