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

mysql 쿼리문 속도좀 줄이려고 합니다~~

· 12년 전 · 1985 · 5
[code]
select b.* from (select wr_is_comment, mb_id, wr_id from {$g4['write_prefix']}job where wr_is_comment = '0' and mb_id = '{$member[mb_id]}') a join (select * from {$g4['write_prefix']}job where wr_is_comment = '2') b on a.wr_id = b.wr_parent
[/code]

제가 생각 해도 무식한 방법이네요.
mysql 쪽으로는 많이 약해서 ㅎㅎ;

일단 작동은 정상으로 하는데 limit 10건 결과값 출력이 13초 걸리네요.(phpmyadmin의 sql기능 이용하면 속도 나와요 ^^)
(참조하는게 많으니 당연할지도 모르겠네요.)

위 쿼리문과 다른 방법 없을까요??

위 쿼리문의 조건
1. 조회 하고자 하는 데이터는 wr_is_comment = '2' 이다.
2.1번에 합당하는 데이터중 wr_parent 가 다른 데이터의 wr_id와 같으며, 1번의 wr_parent와 wr_id가 같은 데이터의 mb_id 가 현제 자신의 아이디 이다.

이 정도가 되겠네요.

댓글 작성

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

로그인하기

댓글 5개

2번 조건 설명은 간단히 알아먹을 수가 없네요 ㅎㅎ
두 조건을 따로 쿼리헤서 php코드로 비교하는 소스를 만들어서 속도 차이를 비교해보시죠
흠... 간단하게 프로그램으로 생각 해보겠습니다.
wr_is_comment = 1 이 댓글이라는것을 아시지요? 단지 이것을 2로만 바꾼것이구요.

나의 글에 댓글을 단 데이터만 출력을 하고자 함 입니다.

2중 루프로 돌려 뽑는것 쉬운데 이걸 한큐에 끝내려니 어렵네요 ㅎㅎ
2중으로 하면 쉬운데 ㅠ.ㅠ;
ps. 댓글과는 다르게 wr_is_comment = 2 인설트 발생시 따로 원글에는 따로 카운트 업데이트가 발생 되지 않습니다.
select * from {$g4['write_prefix']}job as a where a.wr_is_comment = '2' and a.wr_parent = if((select count(wr_id) from {$g4['write_prefix']}job where mb_id = '{$member[mb_id]}' and wr_id = a.wr_parent) > 0, a.wr_parent, 'fail') order by a.wr_last desc limit 0, 10

ㅠ.ㅠ; 이렇게 하니까 속도가 빠르고 정확하게 나오네요.

역시 스택오버플로우는 진리, 개발자들의 성격 이네요~ (mysql if 처리문 참고)
결국은 오늘도 자문자답.... ㅠ.ㅠ;;;;
균이님 답변 감사합니다. ㅎ.ㅎ;

게시글 목록

번호 제목
284508
284499
284492
284490
284484
284481
284478
284476
284474
284472
284470
284458
284457
284454
284453
284447
284446
284444
284441
284440