MySQL에서 인덱스를 사용하여 결합 된 두 세트의 인수 테이블 세트; 하나는 풀 테이블 스캔이 필요합니다

StackOverflow https://stackoverflow.com/questions/2262458

  •  20-09-2019
  •  | 
  •  

문제

MySQL의 인덱스와 매우 혼란스러워합니다.

Tablea1과 Tabea2의 두 가지 테이블이 있습니다.

나는 그들 사이의 결합을 위해 이것들에 대한 색인을 만들었고 쿼리는 정말 빠르게 실행됩니다.

동일한 설정 EG TableB1 및 TableB2가있는 또 다른 2 개의 테이블이 있습니다. 유일한 차이점은이 테이블에 몇 가지 널 값이 있다는 것입니다.

어떤 이유로 든 Tablea의 동일한 쿼리는 약 5 배 빠르며 전체 테이블 스캔이 필요하지 않습니다. 그러나 TableB는 전체 테이블 스캔을 사용하는 것처럼 보이며 그 이유를 해결할 수 없습니다. 이것을 일으키는 널 값 일 수 있습니까?

Tablea 설정에서 나는 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 :

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;

필드 1과 함께 Field3에 가입하고 있습니다.

전체 테이블 스캔을 얻는 테이블은 위의 테이블과 동일합니다. 유일한 차이점은 Tablea 대신 TableB라고합니다.

건배,
ke

도움이 되었습니까?

해결책

방금 테이블을 삭제하고 DB로 다시 설치했습니다 (UTF8을 Latin1로 변경했습니다. 이것이 차이가 있는지 확실하지 않음). 모든 대답에 대해 대단히 감사합니다. 그들은 확실히 응답 치어를 향해 나를 밀어 붙였다 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top