쿼리속도관련 조언부탁드립니다. 0 12 1,024

by 호야별리 [어플리케이션관련] [2013.07.23 20:09:58]


회원가입후 눈팅만하다 이렇게 고수님들의 조언을 구하고자 글남깁니다.
개발언어는 PHP구요, 디비는 10g, 운영체제는 리눅스 입니다.
단순한 쿼리인듯한데 제가 워낙 초짜라 무엇이 잘못됐는지 조언부탁드립니다.
쇼핑몰개발작업중인데요.
달력형태로 고객들의 주문내역을 간단하게 출력하려고 하는데요.
속도가 넘 느리네요. ㅡㅡ
쿼리는 아래와 같습니다.

select userid,orderno,orderdate,totprice from
ordersheet where userid='$_SESSION[MEM_ID]' and orderdate like '$mtday%'

$_SESSION[MEM_ID] = 로그인아이디
$mtday = 해당 년월일 입니다.
고수님들의 조언부탁드립니다.

by 마농 [2013.07.23 23:41:44]
인덱스가 없어서 느린 듯...

by 호야별리 [2013.07.24 08:45:01]
select /*+ INDEX_FFS(ordersheet ordersheet_orderno_index) */ userid,orderno,orderdate,totprice from
ordersheet where userid='$_SESSION[MEM_ID]' and orderdate like '$mtday%'

위처럼 처리를 해도 느리네요..ㅡ,.ㅡ 에효. 답변감사합니다.
눈 끄게뜨고 뭐가 문제인지 상세히 살펴봐야겠넹 ^^

by 임상준 [2013.07.24 08:52:42]

orderno 인덱스에 컬럼 구성이 userid + orderdate 인가요?


by 야신 [2013.07.24 09:05:15]
인덱스 구성을 좀 알려주세요~

by 호야별리 [2013.07.24 09:17:44]
제가 오라클 완전초짜라서 야신님과 임상준님의 말씀을 이해를 못하고 있습니다. 죄송합니다.
인덱스 생성여부를 확인했을때는 힌트를 준것처럼 저렇게 구성은 되어있더라구요 ㅡ,.ㅡ

by 임상준 [2013.07.24 09:32:27]
조회 조건 컬럼(userid, orderdate) 에 인덱스가 걸려 있어야 사용이 가능한데
인덱스 이름만 봐서는 orderno 컬럼 관련한 인덱스 인 것 같네요...

by 미카엘 [2013.07.24 09:34:27]
index_ffs : 인덱스 fast full scan입니다.
(index 전체를 multiblock i/o로 스캔 후 테이블 스캔처리 합니다. 성능면에서는 table full scan보다
느립니다.)

힌트를 쓰실거면 /*+ index(ordersheet ordersheet_orderno_index) */ 적용하셔야 합니다.
단. 인덱스 구성 ordersheet_orderno_index : userid + orderdate로 되어 있어야 합니다.
(인덱스 구성 확인해보세요.)

마농님 말씀처럼 orderno index인것 같네요. 결합인데스 userid + orderdate 혹은
단독 user_id 인덱스가  있는지 확인해 보셔야 할 듯하네요. (없으면 추가하시구요) 

적용 후 plan 확인 하세요.
정상적인 인덱스가 이용 되었으면 plan상에 index range scan으로 나올 것입니다.

약간이나마 도움이 되었으면 합니다.

by 마농 [2013.07.24 09:35:42]
해당 인덱스는 orderno(주문번호) 인덱스네요.
위 쿼리의 조건과는 전혀 상관 없는 인덱스네요.
(userid, orderdate) 결합인덱스가 있어야 하구요.
아니면 userid 단독 인덱스라도 있어야 합니다.

by 호야별리 [2013.07.24 09:55:44]

감사합니다. 고수님들의 말씀대로 재차확인해보도록하겠습니다.
그런데 현재 운영중인 시스템에 단독이나 결합인덱스를 추가할수있나요?


by 미카엘 [2013.07.24 10:05:39]
운영 시스템에 개발자가 인덱스 추가 하시는게 아니구요. 해당 운영 현업담당자에게 요청하세요.
현업담당자가 해당 회사 DBA에게 요청할거고 DBA가 시스템 상황 확인해서
인덱스 추가 여부를 결정할거라고 생각됩니다. ^^
호야님은 인덱스가 필요할 것 같다고 확인요청만 하시면 될 듯 합니다.

호야님이 혹시 DBA ???

by 호야별리 [2013.07.24 10:19:59]

DBA요? ㅡ,.ㅡ 아닙니다.
그냥 순수개발자입니다. 진행중인 개발자가 갑자기 도망가는 바람에 얼떨결에 ㅡ,.ㅡ


by 호야별리 [2013.07.24 10:21:09]
며칠동안 지켜봐야겠지만 앗...쿼리속도 향상됐습니다.
고수님들 감사합니다. ^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입