실행 시간이 느린 대형 테이블에 대한 MySQL 쿼리 최적화
MySQL 쿼리에 효율적인 인덱스가 부족하여 실행하는 데 1분 이상 소요됩니다. 데이터 검색을 최적화합니다. 특히 100만 개 이상의 레코드로 인해 테이블의 크기가 커서 문제가 더욱 악화됩니다.
ID 열에 테이블을 인덱싱하는 것은 ID별 정렬과 관련된 쿼리 속도를 높이는 데 중요합니다. 그러나 제공된 정보에 따르면 인덱싱만으로는 충분하지 않은 것 같습니다.
다음은 쿼리 성능을 향상하기 위한 몇 가지 제안 사항입니다.
WHERE 절과 함께 범위 쿼리 사용
특정 레코드 범위를 검색하기 위해 LIMIT를 사용하는 대신 관계 연산자와 함께 WHERE 절을 활용하는 것을 고려해 보세요. 예를 들어, 다음 쿼리는 범위 쿼리를 사용하여 ID 값이 499501보다 크거나 같은 레코드를 선택하고 결과를 500개 행으로 제한합니다.
select * from `ratings` where id >= 499501 limit 500;
이 쿼리는 인덱스된 id 열을 사용하여 원하는 레코드를 효율적으로 찾을 수 있습니다.
쿼리 설명 계획
문제를 추가로 해결하려면 EXPLAIN 쿼리를 실행하여 쿼리 실행 계획에 대한 통찰력을 얻으세요. 이는 쿼리 유형, 사용된 인덱스 및 스캔할 예상 행 수에 대한 세부 정보를 제공합니다.
explain select * from `ratings` where id >= 499501 limit 500;
교착 상태 배제
교착 상태가 발생하는 경우 두 개 이상의 동시 트랜잭션은 서로가 잠금을 해제할 때까지 기다리므로 둘 중 하나가 진행되지 못하게 됩니다. 제공된 정보에서는 교착 상태가 가능한 원인으로 제시되지는 않지만 고려해 볼 가치가 있습니다.
위 내용은 큰 테이블에 대한 MySQL 쿼리가 너무 느린 이유는 무엇이며 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!