집 >데이터 베이스 >MySQL 튜토리얼 >mysql 성능 최적화 최대, 개수 최적화
참고: MySQL의 실행 계획을 보려면 SQL 문을 실행하기 전에 explain을 추가하세요.
데이터베이스: MySQL에서 공식적으로 제공하는 sakila 데이터베이스
예: 마지막 결제 시간 쿼리
explain select max(payment_date) from payment \G;
쿼리 유형은 단순하고 인덱스를 사용하지 않으며 스캔 행 수가 10,000개 이상이며, 0.02초 소요
최적화 방법:
결제_날짜 열에 인덱스 생성
create index idx_paydate on payment(payment_date);
그런 다음 이 SQL 문을 실행하고 다음을 찾습니다.
이 실행 결과가 나오는 이유는 인덱스가 순차적으로 정렬되어 있기 때문에 인덱스를 통해 마지막 것이 무엇인지 바로 알 수 있다는 것입니다.
예를 들어 : 하나의 SQL 문에서 동시에 알아보세요. 2006년과 2007년의 영화 수는 각각 얼마입니까
틀린 방법:
select count(release_year = '2006' OR release_year = '2007') from film;
2006년과 2007년의 영화 수는 별도로 계산할 수 없습니다.
select count(*) from film where release_year = '2006' and release_year = '2007'
release_year는 2006년과 2007년이 동시에 될 수 없으므로 논리적으로 잘못된 것입니다
쿼리 최적화는 다음과 같습니다.
select count(release_year='2006' or null) as '2006年的电影数量',count(release_year='2007' or null) as '2007年的电影数量' from film;
는 SQL에서 다음의 실행 결과를 설명합니다. count(*)
과 count(某列)
은 경우에 따라 다를 수 있습니다. 왜냐하면 , count(*)
에는 null이 포함되어 있고, 다른 하나가 null이면 계산되지 않기 때문입니다.
이 기능을 사용하면 2006년 이외의 연도는 null로 기록됩니다. 실행 결과는 아래 그림과 같습니다
참고: MySQL의 실행은 다음과 같이 볼 수 있습니다. SQL 문 실행 전 설명 추가
데이터베이스: MySQL에서 공식 제공하는 sakila 데이터베이스
예: 마지막 결제 시간 쿼리
explain select max(payment_date) from payment \G;
쿼리 유형은 단순하고 인덱스를 사용하지 않으며 스캔 행 수는 10,000개 이상이며 0.02초가 걸립니다.
최적화 방법:
Payment_date 열에 인덱스를 생성합니다
create index idx_paydate on payment(payment_date);
그런 다음 이 SQL 문을 실행했을 때 다음을 발견했습니다.
이 실행 결과의 이유는 다음과 같습니다. 순서대로 정렬되어 있는데, 인덱스를 통해 마지막이 무엇인지 바로 알 수 있습니다
예: 하나의 SQL 문에서 2006년과 2007년의 영화 개수를 알아보세요
오류 방법:
select count(release_year = '2006' OR release_year = '2007') from film;
따로 계산할 수 없습니다. 2006년과 2007년의 영화 편수
select count(*) from film where release_year = '2006' and release_year = '2007'
release_year가 2006년과 2007년이 동시에 될 수 없으므로 논리가 잘못되었습니다
쿼리 최적화는 다음과 같습니다.
select count(release_year='2006' or null) as '2006年的电影数量',count(release_year='2007' or null) as '2007年的电影数量' from film;
설명 SQL에서는 count(*)
에 null이 포함되어 있기 때문에 count(某列)
과 count(*)
의 실행 결과가 다를 때가 있습니다. 다른 하나는 null이므로 계산되지 않습니다.
이 기능을 사용하면 2006년이 아닌 연도는 null로 기록되고, 실행 결과는 아래 그림과 같습니다
위 내용은 max and mysql 성능 최적화 등 카운트 최적화 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!