database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 40602 게시물 읽기
No. 40602
쿼리 속도가 너무느려서 질문드립니다.
작성자
최창식(murondo)
작성일
2014-11-05 01:59ⓒ
2014-11-05 02:11ⓜ
조회수
7,901
아래 쿼리를 하면 너무 느립니다.
특히 (select sum(t501.cnt) from mall_t501_trade_product t501 where t501.product_code=t121.code and t501.before_stock_cnt !=0) 판매수량
을 넣으면 속도가 급격히 느려집니다...
이 부분을 빼면 빠르고요...

그런데 저 판매 수량을 가져와야 하는데 어떻게 할 지 도통 방법을 모르겠습니다.
DB고수님들 한 수 무탁 드려요... 쿼리에 어떤 문제가 있는 것 같진 않은데 왤케 느린지 거의 9분이 걸린답니다.

쿼리 툴로 쿼리하면 1분정도 걸리나 ASP프로그램에서 작동시키면 거의 뻗어 버립니다~~~ ㅠㅠㅠ

SELECT t201.name 거래처,
       t123.name 대분류,
       t121.code 제품코드,
       t121.name 제품명,
       t121.model_no 모델명,
       t121.bar_code 바코드,
       t121.stock_cnt 현재고량,
       t121.std_stock_cnt 적정재고량,
       t201.code 거래처코드,
       t121.stock_price 매입가,
       t121.sale_price 판매단가,
       t121.standard_in 소박스,
       standard_out 대박스,
       (SELECT sum(t501.cnt)
         FROM mall_t501_trade_product t501
        WHERE t501.product_code=t121.code
              AND t501.before_stock_cnt !=0
       ) 판매수량
  FROM mall_t121_product t121,
       mall_t201_company t201,
       mall_t123_category t123
 WHERE t121.company_code = t201.code
       AND t121.large_fraction = t123.large_fraction
       AND t121.eprise_code = t123.eprise_code
       AND t121.end_date > '20141105'
       AND t121.eprise_code = 2
       AND t201.name = '로이첸@'
ORDER BY t121.name

이 글에 대한 댓글이 총 2건 있습니다.

1. 적절한 인덱스가 있는지 확인
  - 해당 쿼리에 가장 좋은 인덱스는?
    t501(product_code, before_stock_cnt, cnt) 입니다.
  - 하지만 다른 곳에서도 자주 쓰일 인덱스인지?를 확인하여 결정
    일반적으로는 최소한 t501(product_code) 에 인덱스가 있어야 합니다.
2. 데이터량 확인
  - 적절한 인덱스가 있다고 하더라도 데이터 절대량이 너무 많으면 느릴 수 있습니다.
  - 메인쿼리의 결과량?
  - 메인과 서브와늬 관계(1:m) 에서 m 의 평균수량?
3. 다른 대안은 없는지 확인?
  - 서브쿼리 후 정렬 ==> 정렬 후 서브쿼리
    (부분범위처리로 최초응답속도는 개선되나 전체처리속도는 동일)
  - 스칼라서브쿼리 ==> 아우터 조인후 그룹바이
    (서브쿼리 반복수행 부담은 줄지만 그룹바이 부담)

마농(manon94)님이 2014-11-05 10:09에 작성한 댓글입니다.
이 댓글은 2014-11-05 10:10에 마지막으로 수정되었습니다.

무슨 소리인지 잘 모르지만 분석해 보겠습니다...

감사합니다....

초보가~~

최창식(murondo)님이 2014-11-05 15:55에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40608ORA-01805 error in date/time operation [1]
이돈휘
2014-11-10
8606
40604ora-00904 ERROR [1]
최동복
2014-11-06
12316
40603쿼리좀 봐주세요...ㅜㅜ [3]
초보자
2014-11-05
7716
40602쿼리 속도가 너무느려서 질문드립니다. [2]
최창식
2014-11-05
7901
40601약간 꼬인 계층형 쿼리?? [1]
ㅇㅇㅇ
2014-11-04
7564
40600재부팅후 tns 리스너가 없다고 나옵니다.
성준
2014-11-04
8012
40599outer join 관련 문의 드립니다. [2]
db초보
2014-11-03
7764
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다