기본 성능 질문이있을 수 있습니다. SQL 쿼리를 많이 했었지만 복잡한 내부 조인 등은별로하지 않았습니다. 여기에 있습니다 :INNER JOIN이 포함 된 mySQL 쿼리 성능
나는 4 개의 테이블, 국가, 지역, 직원 및 거래 데이터베이스를 보유하고 있습니다.
거래가 직원 및 국가와 연결됩니다. 직원들은 지역과 연결됩니다. 필요한 보고서를 작성하기 위해 필자는 mySQL 데이터베이스에 대해 SQL 쿼리를 처리하는 PHP 스크립트를 실행하고 있습니다.
SELECT trans.transactionDate, agent.code, agent.type, trans.transactionAmount, agent.territory
FROM transactionTable as trans
INNER JOIN
(
SELECT agent1.code as code, agent1.type as type, territory.territory as territory FROM agentTable as agent1
INNER JOIN territoryTable as territory
ON agent1.zip=territory.zip
) AS agent
ON agent.code=trans.agent
ORDER BY trans.agent
약 50,000 개의 레코드가 에이전트 테이블에 있고 200,000 개가 넘는 트랜잭션 테이블이 있습니다. 다른 두 명은 상대적으로 작습니다. 이 쿼리를 실행하는 데 약 7 분이 소요됩니다. 그리고 아직 네 번째 테이블을 삽입하지 않았습니다.이 테이블은 transactionTable (국가)의 필드를 countryTable (국가)의 필드에 연결하고 countryTable (영역)의 필드를 반환해야합니다.
그래서, 두 가지 질문 :
내가 논리적으로 transactionTable과 countryTable 사이의 연결을 둘 것?
누구나이 방법을 제안 할 수 있습니까?
감사합니다.
테이블 구조를 게시 할 수 있으면 많은 도움이됩니다. 쿼리의 가장 큰 문제점은 조인 내부의 SELECT입니다. 그것은 영원히 걸릴 것입니다. 또한 테이블의 색인이 올바르게 작성되었는지 확인해야합니다. –