mysql 잘 하시는분 조언좀 부탁 드립니다.
제가 mysql에 약하다 보니.........
짜논것이.... 엄청 느리네요~ ㅠ.ㅠ;;;;;;
[code]
select * from {$tmp_write_table} a left join pay_log b on a.mb_id = b.pay_id WHERE (a.ad like '{$division} %' or b.pay_board like CONCAT('%', a.wr_id ,', %')) and b.pay_end_time > '{$g4['time_ymdhis']}' GROUP BY a.wr_id HAVING COUNT(a.wr_id) order by {$rand_code} limit 0, $rows
[/code]
다음과 같은 쿼리문과 같은 동작을 하면서 더 빠른 쿼리 구조가 있을까요?
ps. 다시 봐도 막노동의 기억이 새록새록.... ㅎㅎ;;;;
ps2. ...mysql은... 아무리... 해도.... 안느네요 ㅠ.ㅠ;
짜논것이.... 엄청 느리네요~ ㅠ.ㅠ;;;;;;
[code]
select * from {$tmp_write_table} a left join pay_log b on a.mb_id = b.pay_id WHERE (a.ad like '{$division} %' or b.pay_board like CONCAT('%', a.wr_id ,', %')) and b.pay_end_time > '{$g4['time_ymdhis']}' GROUP BY a.wr_id HAVING COUNT(a.wr_id) order by {$rand_code} limit 0, $rows
[/code]
다음과 같은 쿼리문과 같은 동작을 하면서 더 빠른 쿼리 구조가 있을까요?
ps. 다시 봐도 막노동의 기억이 새록새록.... ㅎㅎ;;;;
ps2. ...mysql은... 아무리... 해도.... 안느네요 ㅠ.ㅠ;
|
댓글을 작성하시려면 로그인이 필요합니다.
로그인
댓글 5개
b.pay_id도 키가 설정되어있을것같고.
b.pay_id, b.pay_end_time은 인덱스가 걸려있나요?
이 세가지 정도만 설정이 되어있어도 속도는 빨라질것 같습니다
그리고 다음의 like 문에서 앞쪽 '%'는 꼭 필요한것이 아니라면 빼는것이 속도가 빠를것입니다.
b.pay_board like CONCAT('%', a.wr_id ,', %')
말씀 하신 b.pay_id, b.pay_end_time를 인덱스에 추가했는데 속도는 비슷하네요 ㅎㅎ
b.pay_board like CONCAT('%', a.wr_id ,', %') 이부분은 변경하면 일부 데이터 인식을 할수 없습니다 ㅠ.ㅠ;;;;
explain 으로 실행계획 한번 체크해서 올려주시면 좀더 확인하기가 수월할꺼 같습니다
select mb_id, company_name, end, wr_subject, type, location from {$tmp_write_table} a inner join pay_log b on a.mb_id = b.pay_id WHERE (a.ad like '{$division} %' or b.pay_board like CONCAT('%', a.wr_id ,', %')) and b.pay_end_time > '{$g4['time_ymdhis']}' GROUP BY a.wr_id HAVING COUNT(a.wr_id) order by {$rand_code} limit 0, $rows