사용환경 :
1. mysql 5.0 innodb 사용
2. 게시판 5개 생성 됨
3. 각 게시판마다 약 1000개에서 2000개 정도의 글이 있음.
내용 :
간단한 포럼형 게시판을 만들어 보고 있습니다. 각 게시판의 목록을 나열 할 때 게시판 별로 가장 최근의 article 하나를 함께
보여주기 위해서 LEFT JOIN과 GROUP BY를 함께 사용했습니다만, 질의 후 결과를 받아오기 까지 약 1.8초가 걸리네요.
튜닝에 관한 조언을 부탁드립니다.
테이블 관계도 :
*mysql work bench로 작성하였습니다.
사용한 쿼리 :
SELECT forums.id, forums.name, forums.description, forums.articlecounts, articles.id, articles.title, users.name, articles.created
FROM forums
LEFT JOIN articles ON forums.id = articles.forums_id
LEFT JOIN users ON users.id = articles.users_id
GROUP BY forums.id
ORDER BY forums.id ASC
explain 결과 :
id |
select_type |
table |
type |
possible_keys |
key |
key_len |
ref |
rows |
Extra |
1 |
SIMPLE |
forums |
index |
(NULL) |
PRIMARY |
4 |
(NULL) |
5 |
|
1 |
SIMPLE |
articles |
ref |
fk_articles_forums |
fk_articles_forums |
5 |
forum.forums.id |
530 |
|
1 |
SIMPLE |
users |
eq_ref |
PRIMARY |
PRIMARY |
4 |
forum.articles.users_id |
1 |
|
설정된 인덱스들 :
forums -> id (PRIMARY)
articles -> forums_id, articles_id, users_id
users -> id (PRIMARY)
기타 :
각 키들은 foreign key로 설정해두었습니다.
|