2 개의 데이터베이스가 있습니다. localhost & remotehost. Localhost는 잘 작동하는 것처럼 보이고 신속하게 내 결과를 얻습니다 (이 보드의 도움 덕분에 1 초 미만입니다). mysqldump를 사용하여 localhost를 원격 호스트에 덤프했다 (테이블 구조, 인덱스, & 데이터 포함). remotehost가 localhost의 가상 복제본이 될 것으로 예상했지만 remotehost에서 쿼리를 실행하면 실행 시간이 1 분을 넘습니다. Explain 문은 다른 점이 있습니다 ... '유형'을 '범위'로 변경하고 사용 된 색인을 포함하여 다른 점이 많이 있습니다. 동일한 데이터베이스이지만 다른 Explain 결과
(이 중 일부는 아마 PRIMARY 인덱스를 사용하도록 강제로 고정 할 수 있지만, 차라리 문제의 근본에 도착하고 REMOTEHOST 다르게 작동 이유를 알 것)내 진술 :
을SELECT names.id, names.first, addr.last FROM names, addr WHERE names.first LIKE 'H%' AND addr.last IS NOT NULL AND names.id = addr.id GROUP BY names.id LIMIT 10
는 로컬 호스트에서 문을 EXPLAIN :
이id| select_type|table|type |possible_keys |key |key_len|ref |rows|Extra
1 | SIMPLE |names|index|PRIMARY,first |PRIMARY|4 |NULL |448 |Using where
1 | SIMPLE |addr |ref |last |last |4 |files.names.last |25 |Using where
REMOTEHOST에서 문을 EXPLAIN :
01 23,516,id| select_type|table|type |possible_keys |key |key_len|ref |rows|Extra
1 | SIMPLE |names|range|PRIMARY,first |first |903 |NULL |955 |Using where; Using temporary; Using filesort
1 | SIMPLE |addr |ref |last |last |4 |files.names.last |25 |Using where
UPDATE :
Localhost is using mysql version 5.1.46-log.
Remotehost is using mysql version 5.0.91-log.
이 질문은 프로그래밍 관련 질문이 아니기 때문에, ServerFault로 옮기기에 투표를하십시오. –
제발하지 마세요 .... 이것은 무엇보다 mysql 질문입니다. 이 보드에 더 많은 MySQL 전문가가있는 것 같습니다. –
my.cnf 파일을 비교하여 remotehost에서 잘못 설정되지 않았는지 확인하십시오. 이미 확인한 것 같지만 remotehost에 addr.id에 색인이 있는지 확인하십시오. 또한 "테이블 이름 최적화"를 실행 해보십시오. 통계를 업데이트하려면 remotehost에서. 그렇게 할 필요는 없지만, 그 밖의 무엇을 제안해야할지 모르겠습니다. –