설명에서는 MySQL이 인덱스를 사용하여 선택 문을 처리하고 테이블을 조인하는 방법을 보여줍니다. 더 나은 인덱스를 선택하고 더 최적화된 쿼리 문을 작성하는 데 도움이 될 수 있습니다.
Explain을 사용하는 방법은 매우 간단합니다. select 쿼리문 앞에 explain 키워드만 추가하면 됩니다. 예는 다음과 같습니다.
반향된 데이터의 의미는 다음과 같습니다.
(1) id: SELECT 쿼리 시퀀스 번호인 SELECT 식별자입니다.
(2) select_type : 유형을 선택하며, 다음 값을 가짐
1) 단순 union 및 하위 쿼리
2)primary 最外面的select,在有子查询的语句中,最外面的select查询就是primary。 3)union union语句的第二个或者说是后面那一个.现执行一条语句。
explain select * from uchome_space limit 10 union select * from uchome_space limit 10,10
가 없는 단순 선택을 나타냅니다. (4) 테이블: 이 데이터 행이
에 관한 테이블이 무엇인지 표시합니다. (5 ) 유형 : 연결에 어떤 유형이 사용되었는지 보여주는 중요한 열입니다. 최고부터 최악까지의 조인 유형은 const, eq_reg, ref, range, index 및 ALL
(6) available_key 입니다. 이 테이블에 적용될 수 있는 인덱스를 표시합니다. 비어 있으면 인덱스를 사용할 수 없습니다. 해당 도메인
에 대한 WHERE 문에서 적절한 문을 선택할 수 있습니다. (7) 키: 실제 사용되는 인덱스입니다. NULL인 경우 인덱스가 사용되지 않습니다. MYSQL이 최적화되지 않은 인덱스를 선택하는 경우는 거의 없습니다. 이 경우 SELECT 문에서 USE INDEX(인덱스 이름)를 사용하여 인덱스를 강제로 사용하거나 IGNORE INDEX(인덱스 이름)를 사용하여 MYSQL이 인덱스
를 무시하도록 할 수 있습니다(8 ) key_len: 사용된 인덱스의 길이. 정확성을 잃지 않으면서 길이가 짧을수록 좋습니다.
(9) ref: 인덱스의 어느 열이 사용되는지 표시, 가능하면 상수
(10) 행: 인덱스의 수 MYSQL이 요청한 데이터를 반환하려면 검사해야 한다고 생각하는 행.
(11)추가: MYSQL이 쿼리를 구문 분석하는 방법에 대한 추가 정보입니다. 나쁜 예는 임시 사용 및 파일 정렬 사용입니다. 이는 MYSQL이 인덱스를 전혀 사용할 수 없음을 의미하며 결과적으로 검색 속도가 매우 느려집니다
1)Distinct:一旦MYSQL找到了与行相联合匹配的行,就不再搜索了 2)Not exists: MYSQL优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行,就不再搜索了 3)Range checked for each Record(index map:#):没有找到理想的索引,因此对于从前面表中来的每一个行组合,MYSQL检查使用哪个索引,并用它来从表中返回行。 这是使用索引的最慢的连接之一 4)Using filesort: 看到这个的时候,查询就需要优化了。MYSQL需要进行额外的步骤来发现如何对返回的行排序。 它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来排序全部行 5)Using index: 列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候 6)Using temporary 看到这个的时候,查询需要优化了。这里,MYSQL需要创建一个临时表来存储结果,这通常发生在对不同的列集进行ORDER BY上,而不是GROUP BY上
위 내용은 MySQL 쿼리 성능 분석 도구 - 키워드 분석 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!