MySQL 최적화: Different가 너무 느리다
이 양식에 대한 질문이 있습니다.
SELECT COUNT(*)
FROM
table1, table2, table3, table4, table5, table6
where (several conditions to join the tables)
실행에는 몇 분 걸립니다(결과 수는 2000만 개).
문제는 다음과 같이 DISTINCT를 추가할 때 다음과 같습니다.
SELECT COUNT( DISTINCT field1, field2, field3, field4, field5 )
FROM
table1, table2, table3, table4, table5, table6
where (several conditions to join the tables)
실행은 3시간 이상 걸립니다.
이 문제는 DISTINT 동작에 있는 것 같습니다.JOIN 조건은 두 버전 모두 동일하기 때문입니다.DISTINT 버전 실행을 최적화할 수 있는 방법이 있습니까?
감사해요!
실행에는 몇 분 걸립니다(결과 수는 2000만 개).
를 처리하려면count(distinct)
MySQL은 20억 개의 행을 정렬해야 합니다.그것은 많은 데이터입니다.
그것은 많은 시간이 걸린다.중간 데이터가 크지 않도록 쿼리를 수정할 수 없는 한 이 문제에 대해 할 수 있는 일이 많지 않습니다.
SQL 문을 변경하거나 테이블의 구조를 변경하지 않으면(예를 들어 일부 인덱스나 새로운 중간 요약 테이블 추가), DISTINT 버전의 쿼리를 더 빨리 실행할 수 없습니다.
경과 시간 측면에서 "큰 암초"는 "파일 정렬 사용" 작업일 수 있습니다.사용하고 있습니다EXPLAIN
쿼리 실행 계획을 확인하려면 먼저 MySQL이 어떤 작업을 어떤 순서로 수행하는지 파악해야 합니다.
MySQL 및 MariaDB에는 조정할 수 있는 시스템 파라미터가 몇 가지 있습니다.예를 들어 디스크로 흘리기 전에 MEMORY에 저장해야 할 임시 세트에 메모리를 더 할당하는 경우입니다.그러나 20억 행의 성능 문제를 해결할 수 있는 매직 튜닝은 거의 없습니다.또한 문제를 해결하기 위해 더 나은 하드웨어를 투입할 수 있는 옵션이 항상 있습니다.
SQL 문을 변경하거나 여러 문을 실행하는 데 관심이 있는 경우 튜닝할 수 있습니다.
새로운 선택 문장으로 왼쪽 결합을 시도했는가? 단어만족스러운 단어를 가진 새로운 선택 문장으로?
언급URL : https://stackoverflow.com/questions/60191314/mysql-optimization-distinct-too-slow
'sourcecode' 카테고리의 다른 글
PDOException SQLSTATE[HY000] [2002] 해당 파일 또는 디렉터리가 없습니다. (0) | 2022.09.06 |
---|---|
배열에 JavaScript/jQuery에 특정 문자열이 포함되어 있는지 확인하는 방법 (0) | 2022.09.06 |
클래스를 보호 클래스로 정의할 수 없는 이유는 무엇입니까? (0) | 2022.09.06 |
다른 검색/매핑 배열에 따라 배열의 키를 바꿉니다. (0) | 2022.09.06 |
AJAX 요청은 PHP 세션 정보를 유지합니까? (0) | 2022.09.06 |