2011-11-03 6 views
43

일부 블로그와 최적화와 관련된 몇 가지 기사에서 쿼리 최적화 방법을 읽었습니다. 인덱스를 사용해야하고 좋은 관계형 데이터베이스 스키마를 사용하여 모든 기본 키와 외래 키가 올바르게 설정되어 있는지 확인해야합니다.MySQL 설명 쿼리 이해

지금 내가 최적화하는 데 필요한 쿼리를 가지고 있고이 EXPLAIN에이 얻을 : 내가 MySQL을 5.5

을 사용하고

Using where; Using temporary; Using filesort 

나는 내 임시 테이블에 WHERE하지만를 사용하고 알고도 filesort? 이것은 무엇을 의미 하는가?

+4

귀하의 검색어를 붙여 넣으십시오. – DRapp

답변

32

임시 사용은 MySQL이 쿼리를 실행할 때 계산 된 중간 데이터를 저장하기 위해 임시 테이블을 사용해야 함을 의미합니다.

filesort를 사용하는 것은 정렬 알고리즘으로 MySQL은 정렬을위한 색인을 사용할 수 없기 때문에 메모리에서 전체 정렬을 수행 할 수 없습니다. 대신 정렬을 작은 청크로 분할 한 다음 결과를 병합하여 최종 정렬 된 데이터를 얻습니다.

http://dev.mysql.com/doc/refman/5.0/en/explain-output.html을 참조하십시오.

난 당신이 ORDER BY 플러스 일부 파생 테이블이나 하위 쿼리를 사용하는 것 같아요. 쿼리 및 관련 테이블/인덱스 정보와 EXPLAIN 출력을 붙여 넣을 수 있다면 좋을 것입니다.

+0

정보 주셔서 감사합니다. – Ken

5

구문 :

Explain `MySQL Query` 

예 :EXPLAIN SELECT * FROM categoriesG

예 :EXPLAIN EXTENDED SELECT City.Name FROM City JOIN Country ON (City.CountryCode = Country.Code) WHERE City.CountryCode = 'IND' AND Country.Continent = 'Asia'G

가 귀하의 MySQL의 쿼리를 다음 것을 설명한다

Better explained in details here