2011-12-21 5 views
0

MySQL보기를 ODBC를 통해 MS Access에 연결했지만 속도가 느립니다.기본 MySQL SELECT 쿼리 실행 속도가 매우 느림

두 번째 다른 선택을 비교하여 첫 번째 선택에 고유 한 레코드를 찾는 간단한 선택입니다.

SELECT `contacts_onlinedonors`.`contactkey` AS `contactkey` 
FROM (`hal9k3-testbed`.`contacts_onlinedonors` 
    LEFT JOIN `hal9k3-testbed`.`contacts_offlinedonors` 
     ON((`contacts_onlinedonors`.`contactkey` = 
     `contacts_offlinedonors`.`contactkey`))) 
WHERE Isnull(`contacts_offlinedonors`.`contactkey`) 

느린 쿼리 로그에는 15 억 개를 조사한 후 34,000 개의 행이 반환됩니다. 기본 테이블에는 단지 200,000 개가 있습니다. 이런 젠장?

"contactkey"필드는 분명히 테이블의 인덱스입니다.

+1

이 문제는 "MySQL보기를 ODBC를 통해 MS Access에 연결했습니다"와 관련이 있다고 생각됩니다. MySQL 쿼리를 직접 실행하면 느려 집니까? – Corbin

+2

제목이 기본이라고 말했습니다 ... 쿼리에 EXPLAIN을 수행하십시오. –

+0

contactkey는 table-offlinedonors 또는 onlineonors에 대한 인덱스입니까? –

답변

2

먼저해야 할 일은이 쿼리를 "설명하는"것입니다. 참조 http://dev.mysql.com/doc/refman/5.0/en/explain.html

아이디어는 MySQL 서버가 무엇을하고 있는지, 어떤 인덱스가 사용 중인지, 필요에 따라 인덱스를 추가하거나, 인덱스를 사용할 수 있도록 쿼리를 다시 작성하는 것입니다.

관련 문제