안녕하세요, 매번 눈팅만 하다 처음으로 질문드려보네요 (_ _)
현재 약 33,000개 정도의 레코드를 가진 테이블이 2개 있는데요(row 수가 같습니다)
a테이블에는 약 40개, b테이블에는 약 48개의 필드가 있습니다.
쿼리는 아래와 같습니다.
SELECT a.field1, field2, field3, field4, field5, field6, field7, b.field8, field9
FROM table1 a, table2 b
WHERE a.field1 = b.field8
AND field9 = '30'
ORDER BY a.field1 DESC
혹은
SELECT a.field1, field2, field3, field4, field5, field6, field7, b.field8, field9
FROM table1 AS a LEFT JOIN table2 AS b ON(a.field1=b.field8)
WHERE field9 = '30'
ORDER BY a.field1 DESC
와 같이도 사용 해 보았습니다.
이것을 EXPLAIN 해보니
table |
type |
possible_keys |
key |
key_len |
ref |
rows |
Extra |
a |
index |
PRIMARY |
PRIMARY |
4 |
NULL |
33146 |
|
b |
eq_ref |
carry_seq_2 |
carry_seq_2 |
4 |
a.seq |
1 |
Using where |
와 같은 결과가 나왔습니다.
헌데, PHP 페이지를 통해 실제 쿼리를 하고 결과값을 받아 페이지 로딩이 완료되는 시간을 코드에 넣어 알아본 결과
약 8~9초정도가 걸리고 있었습니다.
3만건에 이정도면 좀 느린게 아닌가 싶은데요..
필드가 많은탓일까요?
필드가 많아서 SELECT로 선택되는 필드들을 몇개만 고른거였는데..
OPTIMIZE는 해봤지만 그다지 효과를 보지는 못했구요,
이 쿼리... 어떻게 최적화 할 수 있을까요?
고수님들의 도움을 간곡히 부탁드립니다 ㅠㅠ
아, 참고로 버전은 사정상 4.1.18입니다. |