테스트 사이트 - 개발 중인 베타 버전입니다

슬로우 쿼리 질문드립니다. 이것이 어디서 발생하는 쿼리인지요? 채택완료

나눔돌 2년 전 조회 2,031

# Time: 230405 21:26:05

# Query_time: 4  Lock_time: 0  Rows_sent: 1  Rows_examined: 351231

select wr_id, wr_subject from g4_write_free where wr_is_comment = 0 and wr_num < '-354793'  order by wr_num desc, wr_reply desc limit 1;

 

이것이 어떤것을 할시에 발생되는 쿼리인가요? 검색은 기본정보에서 3000개로 설정해놓은 상태입니다. 검색은 아닌것 같기도 하고, 업데이트 쿼리가 아니라 쓰기관련은 아닌것같고.. 3만건 이상의 데이터를 가져오는 이런 쿼리가 발생할수 있는것이 글쓰기나 삭제, 정렬, 검색 등 어떤것을 할때 발생할수 있는 쿼리일까요?

 

해당쿼리로 인하여 슬로우쿼리가 발생하여 사이트가 계속 지연된다는 호스팅업체의 답변을 받았습니다. 

 

도움좀 부탁드리겠습니다. 

댓글을 작성하려면 로그인이 필요합니다.

답변 6개

채택된 답변
+20 포인트

// 윗글을 얻음

    $sql = " select wr_id, wr_subject from $write_table where wr_is_comment = 0 and wr_num = '$write[wr_num]' and wr_reply < '$write[wr_reply]' $sql_search order by wr_num desc, wr_reply desc limit 1 ";

    $prev = sql_fetch($sql);

    // 위의 쿼리문으로 값을 얻지 못했다면

    if (!$prev[wr_id]) {

        $sql = " select wr_id, wr_subject from $write_table where wr_is_comment = 0 and wr_num < '$write[wr_num]' $sql_search order by wr_num desc, wr_reply desc limit 1 ";

        $prev = sql_fetch($sql);

    }

 

여기서

and wr_num < '$write[wr_num]'

 and wr_id > '$write['wr_id']' 

로 바꿔 보세요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

나눔돌
2년 전
너무 감사합니다. 엑스엠엘님. 바로 테스트 해보겠습니다^^~~~
엑스엠엘
2년 전
빠뜨린 게
order by wr_num desc,
이것도
order by wr_id ASC,
로 바꾸세요.

이전글 다음에 따라
부등호나 ASC, DESC를 맞춰 보세요.

댓글을 작성하려면 로그인이 필요합니다.

나눔돌
2년 전

Show index  from g4_write_free
실행 결과

 

Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
g4_write_free 0 PRIMARY 1 wr_id A 436570 NULL NULL   BTREE  
g4_write_free 1 wr_num_reply_parent 1 wr_num A 436570 NULL NULL   BTREE  
g4_write_free 1 wr_num_reply_parent 2 wr_reply A 436570 NULL NULL   BTREE  
g4_write_free 1 wr_num_reply_parent 3 wr_parent A 436570 NULL NULL   BTREE  
g4_write_free 1 wr_is_comment 1 wr_is_comment A 2 NULL NULL   BTREE  
g4_write_free 1 wr_is_comment 2 wr_id A 436570 NULL NULL   BTREE  
g4_write_free 1 list_index 1 wr_is_comment A 2 NULL NULL   BTREE  
g4_write_free 1 list_index 2 wr_num A 436570 NULL NULL   BTREE  
g4_write_free 1 list_index 3 wr_reply A 436570 NULL NULL   BTREE  
g4_write_free 1 comment_index 1 wr_is_comment A 2 NULL NULL   BTREE  
g4_write_free 1 comment_index 2 wr_parent A 436570 NULL NULL   BTREE  
g4_write_free 1 comment_index 3 wr_comment A 436570 NULL NULL   BTREE  
g4_write_free 1 comment_index 4 wr_comment_reply A 436570 NULL NULL   BTREE  
g4_write_free 1 wr_1_idx 1 wr_1 A 5 NULL NULL   BTREE  
g4_write_free 1 wr_6_idx 1 wr_6 A 6929 NULL NULL   BTREE  
g4_write_free 1 wr_datetime_idx 1 wr_datetime A 436570 NULL NULL   BTREE  
g4_write_free 1 ca_name_idx 1 ca_name A 14 NULL NULL   BTREE  
g4_write_free 1 wr_num_idx 1 wr_num A 436570 NULL NULL   BTREE  
g4_write_free 1 wr_reply_idx 1 wr_reply A 1 NULL NULL   BTREE  
로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

2년 전

이전글 또는 다음글을 추출해 오는 부분입니다.

 

개인적으로 생각했을 때 없어도 무방한 내용입니다.

 

해당 쿼리, 이전글/다음글 표시 부분을 모두 삭제하는 방법이 있습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

나눔돌
2년 전
마르스컴퍼니님. 속도가 개선되지 않을때 전체삭제를 해볼수 있도록 하겠습니다. 꾸벅. 도움주신것 너무 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

Phpmyadmim 등에서

Explain elect wr_id, wr_subject from g4_write_free where wr_is_comment = 0 and wr_num < '-354793' order by wr_num desc, wr_reply desc limit 1;

실행한 결과를 올려 보세요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

엑스엠엘
2년 전
Show index from g4_write_free
실행 결과도 올려 보세요
나눔돌
2년 전
Explain select wr_id, wr_subject from g4_write_free where wr_is_comment = 0 and wr_num < '-354793' order by wr_num desc, wr_reply desc limit 1;

table: g4_write_free
type: ref
possible_keys: wr_num_reply_parent,wr_is_comment,list_index,comment_index,wr_num_idx
key: list_index
ref: const
key_len: 1
rows: 217297
Extra: Using where
나눔돌
2년 전
너무 감사합니다. 엑스엠엘님
Show index from g4_write_free
실행 결과를 올리니까 sir 화면이 깨지는데 일단 등록해봤습니다.

댓글을 작성하려면 로그인이 필요합니다.

index hint를 사용하시거나

 index를 추가해 보세요.

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

나눔돌
2년 전
엑스엠엘님 답변 너무나 감사합니다. 혹 좀더 도움을 주실수 있으시다면..
bbs/view.php 파일에서 해당문구 상단에 보면
if (!$board[bo_use_list_view]) {} 전체목록을 사용을 안할시 해당쿼리가 돌아가게 되있는데 현재 게시판에서는 전체목록을 사용하고 있고 체크가 되어 있습니다만 해당쿼리가 돌아가는 상황이 있을수 있을까요?
<input type=checkbox name=bo_use_list_view value='1' checked>사용
엑스엠엘
2년 전
배르만님의 답변 대로
이전 글, 다음 글 구하는 곳에서 생기는 거 같습니다

댓글을 작성하려면 로그인이 필요합니다.

2년 전
로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

나눔돌
2년 전
배르만님 알려주셔서 너무 감사합니다. 너무나도 외람된 말씀입니다만 슬로우 쿼리 내용을 보니까 Rows 30만건 이상이 들어가 지연되는것 같은데. 이것을 어떻게 처리를 하면 속도 개선이 될지 도움을 부탁드릴수 있을까요. 가능하다면 비용을 드리고 요청을 드리고 싶을 정도입니다. 사이트가 갈수록 너무 느려지거나 먹통이 발생되는 현상이 계속 되고 있어서. ㅜㅜ
배르만
2년 전
전체적인 데이터 분포도와 스키마 상태에 따라
적절한 인덱스 작업 또는 쿼리 수정이 필요할것 같습니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인