제 슬로우쿼리인데 인덱스 팁 좀 부탁드립니다.

제 슬로우쿼리인데 인덱스 팁 좀 부탁드립니다.

QA

제 슬로우쿼리인데 인덱스 팁 좀 부탁드립니다.

본문

안녕하세요? ^^

 

mysql 초짜 입니다.

 

슬로우쿼리를 서버에 기록중에 있습니다. 자료 찾아보면서 결합 인덱스 라는것을 알게 되었습니다.

 

현재 슬로우 로그에서 제일 흔하게 자주 나타나는 부분이 몇개 있습니다.

 

<첫번째>

select count(*) as cnt from g5_write_free where wr_parent = '88698' and wr_is_comment = 1;

 

<두번째>

select * from g5_write_torrent_free where wr_parent = '88698' and wr_is_comment = 1 and wr_good >= '10' and as_shingo >= '0' and wr_option not like '%secret%' order by wr_good desc, wr_id desc limit 0, 3;

 

<세번째>

update g5_board_new set as_hit = as_hit + 1 where bo_table = 'kids' and wr_id = '14307';

 

-------------------------------------------------------

위 슬로우로그를 토대로

 

wr_parent 와 wr_is_comment 칼럼을 결합 인덱스 했습니다.

 

그런데 두번째 보면 기존 위 2개 컬럼에 추가로 wr_good , as_shingo 컬럼이 붙어 있습니다.

 

그래서 처음부터 저 4개를 다 결합해야 하는건지 아니면 wr_parent 와 wr_is_comment 이렇게 2개 결합

 

인덱스하고 wr_good , as_shingo 2개는 따로 각각 개별 인덱스 해야 하는지 궁금합니다.

 

그리고 3번째는 update 문인데, 어떻게 인덱스를 줘야 하는지 궁금합니다.

 

아시는 분 답변 꼭! 부탁드려봅니다.

 

이 질문에 댓글 쓰기 :

답변 2

1. 잘 해결하신 것 같아요.

2. explain select ~~~ 이런 식으로 앞에 explain을 붙여서 결과값을 보고 인덱싱을 튜닝해보세요. 제 생각엔 텍스트 서치를 해야하는 not like에서 오래 걸리는게 아닐까 생각합니다. is_secret 같은 컬럼을 bool로 만드는게 성능면에서 훨씬 나을 것 같네요. 저라면 베플을 뽑아서 따로 wr_id를 저장해두는 로직을 만들어두면 좋을 것 같고요.

3. 잘 모르지만 맨 마지막에 limit 1을 붙여보고 효과가 있나 확인해보세요.

답변을 작성하시기 전에 로그인 해주세요.
전체 62
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT