임피던스는 MySQL의 인덱스와 매우 혼동됩니다.MySQL에서 인덱스를 사용하는 조인이있는 2 세트의 indentical 테이블. 하나는 풀 테이블 스캔이 필요합니다.
두 테이블이 있습니다 : TableA1과 TableA2.
그들 사이에 조인을위한 인덱스를 생성했는데 쿼리가 정말 빠르게 실행됩니다.
동일한 설정을 가진 또 다른 2 개의 테이블이 있습니다. TableB1 및 TableB2. 유일한 차이점은 이러한 테이블에 몇 가지 null 값이 있다는 것입니다.
TableA에서 동일한 쿼리가 약 5 배 빠르며 전체 테이블 스캔이 필요하지 않습니다. TableB 그러나 전체 테이블 스캔을 사용하는 것 그리고 나는 왜 작동하지 않을 수 있습니다. 이것을 일으키는 Null 값이 될 수 있습니까?
TableA 설정에서 EXTERNAL을 사용하면 possible keys: myindex
과 ref: func
이 나옵니다. 그러나 TableB 설정에서 나는 단지 possible keys: NULL
과 ref: NULL
을 얻습니다.
나는 이것에 대해 꽤 오래 검색했으며 관련 답변을 찾을 수없는 것으로 보입니다. 누군가가 올바른 방향으로 나를 가리킬 수 있다면 감사하겠습니다.
(죄송합니다, 이제 원래의 질문에 추가됩니다.) 여기
가 TableAOne입니다 :CREATE TABLE `TableAOne` (
`field1` varchar(255) DEFAULT NULL,
`field2` varchar(255) DEFAULT NULL,
KEY `myindex` (`field1`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
그리고 TableATwo : 나는 필드 1과 입력란 3에 합류하고
CREATE TABLE `TableATwo` (
`Field3` varchar(255) ,
`Field4` varchar(255) ,
`Field5` varchar(255) ,
`id` int(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=15522 DEFAULT CHARSET=utf8;
.
전체 테이블 검색을 수행하는 테이블은 위의 테이블과 동일합니다. 유일한 차이점은 TableA 대신 TableB가 호출된다는 것입니다.
건배,
애
테이블 생성 스크립트와 각 테이블의 행 수를 게시 할 수 있습니까? –
'NULL'은 B 테이블을 연결하는 유효한 값입니까? 그렇지 않다면, JOIN criteria에'AND b2.col IS NOT NULL'을 사용하고, WHERE b1.col IS NOT NULL'을 사용하여 제외 시키십시오. –
yep null은 유효한 값입니다. 빈 값도 있습니다. 현명한!), null 값과 빈 테이블을 유지하고 싶습니다. 잠시 후에 테이블을 게시합니다. –