집 >데이터 베이스 >MySQL 튜토리얼 >데이터베이스 재구성으로 느린 MySQL 쿼리를 어떻게 최적화하고 디스크 I/O를 제거할 수 있습니까?
실행 시간 단축 및 디스크 I/O 제거를 위한 MySQL 쿼리 최적화
일반적인 웹 애플리케이션 시나리오에서 데이터베이스 쿼리 성능은 반응형 사용자 경험을 유지하는 것이 중요합니다. 이 문서에서는 실행 시간이 느려 웹 사이트 성능이 저하되는 특정 MySQL 쿼리를 다룹니다.
문제의 쿼리는 "poster_data", "poster_categories" 및 "poster_prodcat"라는 세 개의 테이블을 조인합니다. "poster_prodcat" 테이블의 특정 조건을 기반으로 테이블에서 데이터를 검색하는 것을 목표로 합니다. 쿼리 실행 계획에서 "poster_prodcat" 테이블과 해당 테이블의 디스크 쓰기가 관련되어 있어 데이터 검색이 비효율적임을 나타냅니다.
성능 문제를 해결하기 위해 데이터베이스와 쿼리를 재구성하는 대체 접근 방식을 모색했습니다. 특히 "poster", "category" 및 "poster_category"라는 이름의 새 테이블을 만들었습니다. "poster_category" 테이블은 (cat_id, Poster_id) 열에 클러스터형 복합 인덱스를 사용하여 설계되었습니다.
이 새로운 스키마를 사용하여 원래 쿼리를 다음과 같이 다시 작성했습니다.
SELECT p.*, c.* FROM poster_category pc INNER JOIN category c ON pc.cat_id = c.cat_id INNER JOIN poster p ON pc.poster_id = p.poster_id WHERE pc.cat_id = 623 ORDER BY p.name LIMIT 32;
재작성된 쿼리에 대한 EXPLAIN 계획을 보면 성능이 크게 향상되었습니다. 이제 쿼리는 인덱스를 효과적으로 사용하여 디스크 I/O 필요성을 줄이고 실행 시간을 최소화합니다.
위 내용은 데이터베이스 재구성으로 느린 MySQL 쿼리를 어떻게 최적화하고 디스크 I/O를 제거할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!