SET timestamp=1493214213; SELECT `comments`.`regdate` FROM `xe_comments` as `comments` , `xe_documents` as `documents` WHERE `documents`.`category_srl` = 44469 and `comments`.`document_srl` = `documents`.`document_srl` and `comments`.`status` = `comments`.`status` ORDER BY `comments`.`regdate` desc LIMIT 1; # Query_time: 10.019935 Lock_time: 0.000017 Rows_sent: 1 Rows_examined: 465304 # Rows_affected: 0
슬로우쿼리 로그 일부 내용입니다.
단독서버호스팅 이용중인데 db쪽으로 그냥 기본지식밖에 없는지라
나름 구글에서 index 관련하여 찾아서 설정을 해주었는데 계속 똑같은 로그가 나오네요.
염치 없지만 조금 팁을 얻을 수 있을까요~?
검색 및 조인하는 조건(document_srl, category_srl)이 검색 범위를 충분히 좁혀주지 못하는 상태에서 전혀 다른 컬럼(regdate)으로 정렬하려고 하면 인덱스가 큰 도움이 되지 못하기 때문에 ORDER BY에서 부하가 많이 걸립니다. 아마 ORDER BY를 빼고 아무거나 1개 가져오라고 하면 순식간에 나올 거예요.
물론 ORDER BY를 빼버리면 가장 최근의 댓글을 가져온다는 목적에 맞지 않으니 그렇게는 곤란하겠고요... 댓글이 꾸준히 많이 올라오는 사이트라면 WHERE comments.regdate > '20170420000000' 이런 식으로 최근 7일 이내의 댓글만 검색하도록 조건을 하나 더 달아 주시면 큰 도움이 됩니다. (사이트의 댓글 등록 빈도에 따라 15일, 30일 등으로 검색 범위를 넓히거나 1일, 3일 등으로 더 좁히셔도 됩니다. 전체 기간을 검색하지만 않으면 됩니다.)