order by 와 limit 구문이 속도에 큰 영향을 미치는 것 같지는 않습니다. 속도 향상을 위해서는 1. NT를 포기한다. 2. 시스템 사양을 좀더 올린다. (특히 메모리양) 3. join 을 될 수 있으면 작게 사용한다. ( MySQL 의 경우 SQL 문에서 join 의 처리에 문제가 있습니다. )
::정현택 님께서 쓰시길::
> WinNT에서 MySQL(3.22.34-shareware)을 사용하고 있습니다.
> CPU:INTEL-450, 메모리:64M입니다...
> 그런데 문제는 데이타가 많아지면 SELECT문의 속도가 굉장히 늦어집니다.... 예를 들어서 해당건수가
> 1만개면 3분이상을 기다려야 한다는 것이죠...
> 그래서
> JOIN_BUFFER=2M,
> KEY_BUFFER=16M,
> SORT_BUFFER=4M,
> RECODER_BUFFER=1M로 변수값을 설정하였으나 결과는 마찬가지입니다...
> 이외에 다른 변수의 SETTING이 더 필요한 것인가요???
> 아래의 SELECT문은 실제로 사용하고 있는 것입니다...
> 꼭 답 좀 주세요...
>
> SELECT b.req_level,
> b.req_seq,
> b.parent_seq,
> b.msg_code,
> b.hit_count,
> b.subject ,
> b.contents,
> b.user_id,
> b.attach_flag,
> b.reg_date,
> u.user_name ,
> di.menu_code,
> d.dep_name,
> c.cate_name
> FROM BOARD_MSG_STB b,
> BOARD_MSG_DTB di,
> USER_MTB u,
> DEPART_MTB d,
> CATEGORY_MTB c
> WHERE b.del_flag = 0
> AND di.del_flag = 0
> AND di.menu_code = 8
> AND b.msg_code = di.msg_code
> AND b.user_id = u.user_id
> AND u.dep_code = d.dep_code
> AND b.cate_code = c.cate_code
> AND ( (
> b.open_public_type = 0
> OR ( b.sec_dep_flag = 1 AND b.msg_code IN ('2000090212051229358','200009021229302752
> 4','2000090212312632344' ))
> OR ( b.sec_person_flag = 1 AND b.msg_code IN ('2000090212051229586'))
> OR ( b.sec_group_flag = 1 AND b.msg_code IN ('2000090212051229323','2000090212051229
> 234'))
> )
> OR ( b.user_id = 'ddd')
> )
> AND (
> b.applicat_type = 1
> OR ( b.applicat_type = 0 AND b.slevel_code <= 10)
> OR ( b.user_id = 'ddd')
> )
> ORDER BY di.msg_seq DESC, b.req_seq LIMIT 0,10;
>
> 또 한가지 질문은 ORDER BY절에 LIMIT를 썼을 경우에 쿼리문의 속도에 어느정도의 영향을 미치는지 입
> 니다....
>
> 그럼 답변 기다리겠습니다...
|