>  기사  >  데이터 베이스  >  기본 테이블에서 동일한 쿼리를 실행하는 것보다 뷰가 훨씬 더 많은 비용을 표시하는 이유는 무엇입니까?

기본 테이블에서 동일한 쿼리를 실행하는 것보다 뷰가 훨씬 더 많은 비용을 표시하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-24 00:26:29599검색

Why Does a View Show Significantly Higher Cost Than Executing Same Query on an Underlying Table?

MySQL 보기 성능 문제

문제:

사용자가 테이블에 대한 쿼리를 가지고 있습니다. 100,000개 행으로 특정 상태를 기준으로 필터링할 때 높은 비용(5200)을 나타냅니다. 동일한 집계 쿼리로 뷰를 생성하고 해당 뷰를 필터링하면 비용이 상당히 높아집니다(100,000).

설명:

비용 불일치의 원인은 다음과 같습니다. 사용된 뷰 알고리즘. 뷰의 기본 알고리즘은 temptable으로, 기본 테이블에서 모든 행을 검색한 다음 필터를 적용합니다. 필터링이 적은 비율의 행을 기반으로 하는 경우 성능이 저하될 수 있습니다.

해결 방법:

이 문제를 해결하려면 다음을 사용하여 뷰를 정의해야 합니다. 병합 알고리즘은 기본 테이블의 인덱스를 사용할 수 있도록 하고 필터링 효율성을 향상시킵니다. 다음 구문을 사용하여 이 작업을 수행할 수 있습니다.

병합 알고리즘을 사용하면 뷰의 쿼리가 이제 상태 열의 인덱스를 활용하여 비용을 줄이고 성능을 향상시킬 수 있습니다.

위 내용은 기본 테이블에서 동일한 쿼리를 실행하는 것보다 뷰가 훨씬 더 많은 비용을 표시하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.