MySQL이 외래 키를 자동으로 인덱싱하는지 여부를 알려줄 수 있습니까?MySQL은 외래 키에 대한 자동 인덱싱을 수행합니까?
My MySQL은 MyIsam Engine을 사용하고 있습니다.
MySQL이 외래 키를 자동으로 인덱싱하는지 여부를 알려줄 수 있습니까?MySQL은 외래 키에 대한 자동 인덱싱을 수행합니까?
My MySQL은 MyIsam Engine을 사용하고 있습니다.
MyISAM은 외래 키를 전혀 지원하지 않습니다. manual에서 :
이노 이외의 스토리지 엔진의 경우, MySQL 서버는 FOREIGN KEY 구문에서 CREATE TABLE 문 구문 분석,하지만 사용하거나 저장하지 않습니다. ... 나중 단계에서 MyISAM 테이블에도 외래 키 제약 조건이 구현됩니다.
이것은 다음 버전 인 MySQL 5.6 용이므로 아직 구현되지 않았습니다. 텍스트는 이전 버전과 완전히 동일합니다.
이것은 외래 키 구조가 전혀 사용되지 않는다는 것을 의미합니다. CREATE TABLE
명령에 지정할 수 있지만 MySQL은 자동으로 무시합니다. 인덱스가 생성되지 않고 저장되지 않습니다. 따라서 SHOW CREATE TABLE
명령은 이 아니며은 외래 키를 생성하려했음을 나타냅니다.
외래 키 지원이 필요하면 InnoDB 스토리지 엔진을 대신 사용해보십시오. InnoDB은 외래 키에 대한 인덱스를 자동으로 생성합니다.
그래서 실제로 질문에 대답하십시오. 인덱스를 원할 경우 열에 별도의 인덱스를 만듭니다. – Konerak
의 MyISAM 엔진은 외래 키를 지원하지 않습니다 만 이노 엔진 :
http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
외래 키 검사가 신속하고 필요로하지 수 있도록 InnoDB하지만 외래 키에 인덱스와 참조 키가 필요합니다 테이블 스캔. 참조 테이블에는 외부 키 열이 같은 순서로 첫 번째 열로 나열되는 인덱스가 있어야합니다. 이러한 색인은 이 없으면 참조하는 테이블에 자동으로 만들어집니다. 외래 키 제약 조건을 적용하는 데 사용할 수있는 또 다른 인덱스 을 작성하면이 인덱스가 나중에 자동으로 삭제 될 수 있습니다. index_name이 주어지면 앞에서 설명한대로 사용됩니다.
MyISAM은 외래 키 제약 조건을 지원하지 않습니다. – eggyal