2011-11-18 5 views
3

나는 다차원 쿼리를 최적화하고 싶습니다. 인덱스를 생성해야합니까?SQL 다 대다 쿼리 인덱스 최적화

SELECT (SELECT COUNT(post_id) 
      FROM posts 
      WHERE post_status = 1) as total, 
     p.*, 
     GROUP_CONCAT(t.tag_name) tagged 
    FROM tags_relation tr 
    JOIN posts p ON p.post_id = tr.rel_post_id 
    JOIN tags t ON t.tag_id = tr.rel_tag_id 
    WHERE p.post_status=1 
GROUP BY p.post_id 

id select_type table type possible_keys key key_len ref rows Extra 
1 PRIMARY  p ALL PRIMARY NULL NULL NULL  5 Using where; Using filesort 

답변

3

당신은 Explain 문을 사용하여 쿼리 실행 계획을 살펴 수 설명한다. 전체 테이블 스캔이 일어나고 있는지 또는 데이터를 검색 할 수있는 인덱스를 찾을 수 있는지를 보여줍니다. 그 시점부터 더 나아질 수 있습니다.

편집 쿼리 실행 계획을 바탕으로

먼저 최적화 단계를 확인하여 테이블은 기본 키가 정의되어 있으며 post_status 및 TAG_NAME 컬럼에 인덱스를 설정할 수 있습니다.

+0

+1 : 예쁜 시행 착오를 많이, 그리고 데이터에 따라 달라집니다 및 그것을 액세스 어떻게 ... –

+0

여기 어디에 사용 결과 PRIMARY, post_status \t post_status const를 이다; filesort 사용 – dsportesa

+0

이제는 NULL 인 이전 실행 계획과 달리 쿼리의 post_status가 키로 설정되었습니다. –