키 포인트
MySQL의 명령을 사용하여 쿼리 실행 계획을 분석하고 최적화하여 연결 유형 및 인덱스 사용과 같은 주요 정보를 공개하여보다 효율적인 데이터베이스 작업을 보장합니다.
EXPLAIN
조항에 사용 된 열에 중점을두고 데이터 검색 속도를 높이고 쿼리 성능을 향상시킵니다. EXPLAIN
WHERE
LIKE
ORDER BY
명령은 원래 쿼리의 시간뿐만 아니라 다른 모든 쿼리의 시간을 표시하므로 쿼리를 정확하게 분석 할 수 있습니다. show profiles;
> 쿼리 실행 계획, 즉 MySQL이 쿼리를 실행하는 방법을 얻는 데 사용됩니다.
, EXPLAIN
,
EXPLAIN
가 우리를 어떻게 도울 수 있는지 잘 설명합니다.
SELECT
DELETE
를 사용하면 인덱스를 사용하여 인덱스를 사용하여 문을 더 빨리 실행할 수 있도록 인덱스를 추가 해야하는 테이블을 확인할 수 있습니다. 를 사용하여 Optimizer가 테이블에 최상의 순서로 결합하는지 확인할 수도 있습니다. INSERT
REPLACE
UPDATE
: 에서 사용자 이메일을 찾습니다.
EXPLAIN
명령을 사용하려면 유형 쿼리 전에 추가하십시오.
이 결과는 처음에는 이해하기 쉽지 않습니다. 각각을 자세히 살펴 보겠습니다. : 이것은
- 의 각 쿼리에 대한 순차 식별자입니다.
쿼리 유형. 이 필드는 여러 가지 다른 값을 취할 수 있으므로 가장 중요한 값에 중점을 둘 것입니다.id
SELECT
:- : 하위 쿼리 또는 노조가없는 간단한 쿼리 select_type
: 와 동일하지만 열의 : 연결은 인덱스 목록을 사용하여 결과 세트를 생성합니다.SELECT
:연결의 가장 바깥 쪽 쿼리에 위치한
: 테이블의 전체 텍스트 색인에 가입하십시오.- :
: 서브 쿼리에서 첫 번째SIMPLE
는 중성자 쿼리의 일부입니다- 는 노조의 두 번째 또는 후속 진술입니다. 필드 값의 전체 목록은 여기에서 찾을 수 있습니다.
PRIMARY
select
:- 출력에서 가장 중요한 필드 일 것입니다. 누락 된 인덱스를 표시하거나 쿼리가 어떻게 재정의되는지 보여줄 수 있습니다. 이 필드의 가능한 값은 다음과 같습니다 (최고에서 최악의 유형으로 정렬) :
DERIVED
select
: 행이 참조하는 테이블.from
:이 필드는 MySQL 연결이 사용하는 테이블 유형을 나타냅니다. 이것은 아마도- : 테이블에는 행이 0 또는 행이 있습니다.
: 인덱스의 모든 부분은 결합에 의해 사용되며 인덱스는 또는SUBQUERY
select
: 테이블에는 행과 일치하는 행이 하나 뿐이며 행이 색인화되었습니다. 이것은 가장 빠른 연결 유형입니다.- 입니다.
UNION
select
: 이전 테이블의 각 행 조합에 대해 인덱스 열의 모든 일치하는 행을 읽습니다. 이 유형의 조인은 일반적으로select_type
또는 연산자를 사용하여 인덱스 된 열에서 발생합니다.table
의
type
서브 쿼리는 테이블에서 하나의 결과 만 반환하고 기본 키를 사용합니다. EXPLAIN
system
: 전체 인덱스 트리를 스캔하여 일치하는 행을 찾으십시오. const
eq_ref
: MySQL이 테이블에서 행을 찾는 데 사용할 수있는 키를 보여줍니다. 이 키는 실제로 사용되거나 사용되지 않을 수 있습니다. PRIMARY_KEY
UNIQUE NOT NULL
: MySQL이 실제로 사용하는 인덱스를 나타냅니다. MySQL은 항상 쿼리에 사용할 수있는 최고의 키를 찾습니다. 여러 테이블에 합류 할 때 에 나열되지는 않지만 더 나은 키를 찾을 수 있습니다. ref
=
: 열 또는 상수를 표시하는 열 또는 상수를 표시합니다.rows
Extra
Using filesort
출력 형식의 전체 문서는 공식 MySQL 페이지에서 찾을 수 있습니다. Using temporary
EXPLAIN
index
:
유형입니다. 를 로 변경하고 성능을 향상시킬 수 있습니다. 전체 텍스트 인덱싱에 대한 자세한 내용은 여기를 참조하십시오. 를 사용하기 때문에 매우 빠릅니다. 이것은
우리는
ALL
는 아마도 최악의 연결 유형이지만 유일한 옵션 인 경우가 있습니다. 요구 사항에 따르면 모든 갤러리 이미지를 원하므로 전체 ALL
테이블을 검색해야합니다. 테이블의 모든 정보가 필요할 때 표에서 특정 정보를 찾으려고 할 때 인덱스가 훌륭하지만 도움이되지 않습니다. 이 상황에 직면 할 때 캐싱과 같은 다른 방법에 의지해야합니다. galleries
LIKE
description
LIKE
match()
INSERT INTO `homestead`.`images` (`id`, `gallery_id`, `original_filename`, `filename`, `description`) VALUES
(1, 1, 'me.jpg', 'me.jpg', 'A photo of me walking down the street'),
(2, 1, 'dog.jpg', 'dog.jpg', 'A photo of my dog on the street'),
(3, 1, 'cat.jpg', 'cat.jpg', 'A photo of my cat walking down the street'),
(4, 1, 'purr.jpg', 'purr.jpg', 'A photo of my cat purring');
도 사용합니다. 쿼리를 제한하기 전에 모든 결과를 정렬해야하므로 사용의 이점이 상실됩니다. <code class="language-sql">SELECT * FROM `homestead`.`images` AS i
WHERE i.description LIKE '%street%';</code>
를 적용합시다.
위 내용은 MySQL 인덱스로 향상되고 설명합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!