내 데이터베이스에 결과를 반환하는 데 25초가 걸리는 쿼리가 있는데, 이는 너무 깁니다. 꽤 간단해야 할 것 같습니다. 두 개의 테이블. 기본 테이블(문서)은 일부 데이터 열이 있는 표준 테이블이고, 연결 테이블은 두 개의 열(parent_id, Division_id)만 있는 매핑 테이블입니다. 이전에는 매핑 테이블에 인덱스가 없어서 인덱스를 추가하고 인덱스를 포함하도록 '해석'을 변경했지만 성능에는 영향이 없는 것으로 보입니다.
쿼리는 다음과 같습니다:
으아악설명 결과는 다음과 같습니다.
문서의 총 줄 수: 6720 매퍼의 총 행 수: 6173
모은 정보를 바탕으로 "유형"이나 "추가"를 개선하여 쿼리를 더 빠르게 만들어야 합니다. 여기서 무엇을 할 수 있나요?
테이블 문 만들기:
explain SELECT DISTINCT doc.* FROM document doc LEFT JOIN multi_division_mapper divisions ON doc.id = divisions.parent_id WHERE doc.clientId = 'SOME_GUID' AND (divisions.division_id IS NULL OR divisions.division_id IN ('SOME_GUID'));
다음 인덱스를 생성하여 테스트에서 더 유리한 EXPLAIN 보고서를 얻을 수 있었습니다.
으아아아기본 키의 접두어이기 때문에
idx_parent
도 제거했습니다.