|
|
|
12-01-22
|
조회 3,705
|
|
|
|
12-01-21
|
조회 3,057
|
|
|
|
12-01-19
|
조회 4,904
|
|
|
|
12-01-18
|
조회 2,907
|
|
|
|
12-01-18
|
조회 2,860
|
|
|
|
12-01-18
|
조회 3,055
|
|
|
|
12-01-17
|
조회 2,843
|
|
|
|
12-01-17
|
조회 3,112
|
|
|
예감
|
12-01-14
|
조회 1.1만
|
|
|
예감
|
12-01-14
|
조회 3,635
|
|
|
예감
|
12-01-14
|
조회 3,955
|
|
|
예감
|
12-01-11
|
조회 3,406
|
|
|
예감
|
12-01-11
|
조회 3,136
|
|
|
예감
|
12-01-11
|
조회 3,134
|
|
|
예감
|
12-01-11
|
조회 3,241
|
|
|
예감
|
12-01-11
|
조회 3,456
|
|
|
|
12-01-11
|
조회 2,777
|
|
|
|
12-01-10
|
조회 3,086
|
|
|
|
12-01-10
|
조회 2,888
|
|
|
|
12-01-10
|
조회 2,924
|
|
|
|
12-01-09
|
조회 2,906
|
|
|
|
12-01-08
|
조회 2,997
|
|
|
|
12-01-07
|
조회 2,982
|
|
|
|
12-01-06
|
조회 2,723
|
|
|
|
12-01-06
|
조회 2,841
|
|
|
|
12-01-05
|
조회 2,838
|
|
|
|
12-01-02
|
조회 2,987
|
|
|
|
11-12-29
|
조회 2,978
|
|
|
|
11-12-28
|
조회 2,949
|
|
|
|
11-12-28
|
조회 2,857
|
|
|
|
11-12-27
|
조회 3,074
|
|
|
|
11-12-23
|
조회 2,820
|
|
|
|
11-12-23
|
조회 2,947
|
|
|
|
11-12-21
|
조회 3,945
|
|
|
|
11-12-21
|
조회 2,975
|
|
|
|
11-12-19
|
조회 2,913
|
|
|
|
11-12-14
|
조회 4,332
|
|
|
|
11-12-08
|
조회 3,479
|
|
|
|
11-12-08
|
조회 4,110
|
|
|
|
11-12-07
|
조회 4,390
|
|
|
|
11-12-06
|
조회 4,292
|
|
|
|
11-12-06
|
조회 3,683
|
|
|
선택이란
|
11-12-05
|
조회 3,320
|
|
|
|
11-12-05
|
조회 4,922
|
|
|
|
11-12-04
|
조회 3,312
|
|
|
|
11-12-03
|
조회 3,623
|
|
|
선택이란
|
11-12-02
|
조회 3,553
|
|
|
|
11-12-02
|
조회 3,537
|
|
|
|
11-12-02
|
조회 2,872
|
|
|
|
11-12-01
|
조회 2,861
|
|
|
|
11-12-01
|
조회 3,743
|
|
|
|
11-12-01
|
조회 2,828
|
|
|
|
11-11-29
|
조회 5,701
|
|
|
|
11-11-23
|
조회 3,636
|
|
|
|
11-11-23
|
조회 3,978
|
|
|
|
11-11-22
|
조회 3,968
|
|
|
|
11-11-22
|
조회 3,022
|
|
|
관리자
|
11-11-21
|
조회 3,556
|
|
|
선택이란
|
11-11-21
|
조회 2,859
|
|
|
선택이란
|
11-11-18
|
조회 3,964
|
|
|
|
11-11-18
|
조회 3,097
|
|
|
|
11-11-17
|
조회 2,982
|
|
|
|
11-11-17
|
조회 2,994
|
|
|
선택이란
|
11-11-17
|
조회 4,576
|
|
|
|
11-11-11
|
조회 2,850
|
|
|
|
11-11-11
|
조회 2,847
|
|
|
선택이란
|
11-11-11
|
조회 3,974
|
|
|
|
11-11-11
|
조회 4,681
|
|
|
관리자
|
11-11-08
|
조회 2,977
|
|
|
|
11-11-06
|
조회 3,427
|
|
|
|
11-11-06
|
조회 3,728
|
|
|
|
11-10-21
|
조회 2,528
|
|
|
|
11-10-21
|
조회 2,446
|
|
|
|
11-10-19
|
조회 2,510
|
|
|
|
11-10-19
|
조회 4,022
|
|
|
|
11-10-08
|
조회 2,548
|
|
|
관리자
|
11-10-06
|
조회 4,241
|
|
|
|
11-10-01
|
조회 2,641
|
|
|
|
11-09-30
|
조회 2,617
|
|
|
|
11-09-29
|
조회 2,604
|
|
|
|
11-09-26
|
조회 2,472
|
|
|
|
11-09-23
|
조회 2,485
|
|
|
|
11-09-23
|
조회 2,229
|
|
|
|
11-09-22
|
조회 2,803
|
|
|
|
11-09-09
|
조회 3,122
|
|
|
|
11-08-30
|
조회 4,199
|
|
|
|
11-08-23
|
조회 2,237
|
|
|
|
11-08-12
|
조회 2,436
|
|
|
|
11-08-04
|
조회 4,000
|
|
|
|
11-07-01
|
조회 2,981
|
|
|
|
11-06-09
|
조회 2,616
|
|
|
|
11-05-17
|
조회 2,741
|
|
|
|
11-05-07
|
조회 2,994
|
|
|
관리자
|
11-04-21
|
조회 2,683
|
|
|
|
11-04-12
|
조회 2,543
|
|
|
|
11-04-11
|
조회 3,627
|
|
|
|
11-02-11
|
조회 2,743
|
|
|
|
11-02-08
|
조회 2,220
|
|
|
|
11-01-11
|
조회 2,593
|
|
|
|
10-11-26
|
조회 3,917
|
댓글 13개
흥미로운 쿼리문이라 살펴 보았습니다.^^
제가 보기에는...
from (select in_pumno, in_code from in_table group by in_code having in_code = "123") a
이 구문은.. 저 select의 결과물이 in_code=123 이것중에 하나만 뽑아지겠네요..
[ WHERE a.in_code='123' order by a.in_code LIMIT 1 ]과 동일한 결과가 나올것 같습니다.
group by보다는 where가 속도가 좀더 빠르지 않을까 생각이 듭니다.
다음줄의
left join (select pr_pumno, pr_code, sum(pr_amount) as pr_amt from pr_table group by pr_code having pr_code = "123") b on a.in_code = b.pr_code
이것또한 비슷하긴 하지만.. 카운트 하는것이 있어서 그룹으로 묶어야 겠네요..
이 안의 서브쿼리는 밖으로 빼는게 속도가 더 느리게 나오나요?
한번도 해보지 않아서 잘 모르겠네요..
인덱스는 당연히 적절히 잘 설정하셨을거라 생각합니다.
데이터셋이 있으면 한번 테스트 해볼텐데..
하쉽네요..^^
한번 테스트해보고 후기 올리겠습니다. 행복한 밤 되세요.^^
대용량 데이터베이스를 만져볼 기회가 잘 없으니..
이런 경험도 귀중한 경험이 될것 같습니다.
1. in_code, pr_code 인덱스 체크
2. 서브쿼리 b의 group by 쿼리를 distinct 쿼리로 수정
3. 서브쿼리 a의 group by 쿼리는 단순 where 조건절로 수정 또는 밖으로 빼서 바로 조인
감사합니다.
from
in_table a
where a.in_code='123'
order by a.in_pumno
저도 초보입장으로 보면.. 두번의 서브쿼리를 풀스캔을 하고 있어서 데이타 양에 따라 상당히 부하가 가지 않을까 싶네요.
순도뤼님 말씀처럼 적절한 인덱스 걸기가 중요할거 같네요.
1. 비교부분에 인덱스 부분, in_pumno,in_code,pr_code
검증이 안된거라..^^; 틀리면 죄송합니다.
그런데 속도는 첫번째 쿼리가 두번째 쿼리보다 엄청빠릅니다.
having 절을 아무데나 쓰는게 아니군요...ㅋ
을 왜 사용하는지 모르겠군요.
HAVING SUM(필드) > 1000 이렇게 함수결과값을 얻어 비교할때만 빠르군요.
일반 조건절은 무조건 where문을 사용하십시오.
SELECT a.in_pumno, a.in_code, a.in_dcno, ifnull( a.in_amt, 0 ) , ifnull( b.pr_amt, 0 ) , ifnull( a.in_amt, 0 ) - ifnull( b.pr_amt, 0 ) , a.in_vendor
FROM (
SELECT in_pumno, in_code, in_dcno, sum( in_amount ) AS in_amt, in_vendor, in_comp
FROM in_table where in_code = '3SILKR001FJNBQ' group by in_code
) as a
LEFT JOIN (
SELECT pr_code, pr_pumno, pr_vendor, sum( pr_amount ) AS pr_amt
FROM pr_table
where pr_code = '3SILKR001FJNBQ' group by pr_code
) as b ON a.in_code = b.pr_code
ORDER BY a.in_pumno
LIMIT 0 , 30
===============================================================================
SELECT a.in_pumno, a.in_code, a.in_dcno, ifnull( a.in_amt, 0 ) , ifnull( b.pr_amt, 0 ) , ifnull( a.in_amt, 0 ) - ifnull( b.pr_amt, 0 ) , a.in_vendor
FROM (
SELECT in_pumno, in_code, in_dcno, sum( in_amount ) AS in_amt, in_vendor, in_comp
FROM in_table
GROUP BY in_code
HAVING in_code = '3SILKR001FY5HM'
)a
LEFT JOIN (
SELECT pr_code, pr_pumno, pr_vendor, sum( pr_amount ) AS pr_amt
FROM pr_table
GROUP BY pr_code
HAVING pr_code = '3SILKR001FY5HM'
)b ON a.in_code = b.pr_code
ORDER BY a.in_pumno
LIMIT 0 , 30
역시 WHERE가 빠르군요..^^
EXPLAIN SELECT a.in_pumno, a.in_code, a.in_dcno, ifnull( a.in_amt, 0 ) , ifnull( b.pr_amt, 0 ) , ifnull( a.in_amt, 0 ) - ifnull( b.pr_amt, 0 ) , a.in_vendor
FROM (
SELECT in_pumno, in_code, in_dcno, sum( in_amount ) AS in_amt, in_vendor, in_comp
FROM in_table
WHERE in_code = '3SILKR001FJNBQ'
GROUP BY in_code) AS a
LEFT JOIN (
SELECT pr_code, pr_pumno, pr_vendor, sum( pr_amount ) AS pr_amt
FROM pr_table
WHERE pr_code = '3SILKR001FJNBQ'
GROUP BY pr_code) AS b ON a.in_code = b.pr_code
ORDER BY a.in_pumno
LIMIT 0 , 30
=====================================================
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <derived2> system NULL NULL NULL NULL 1
1 PRIMARY <derived3> system NULL NULL NULL NULL 1
3 DERIVED pr_table ref pr_code pr_code 50 1 Using where
2 DERIVED in_table ref in_code in_code 50 1 Using where
아직 explain을 분석할줄 몰라 잠시 찾아 보았습니다.
첫번째 두번째 로 분석된 테이블은 인덱스를 활용하지 못했군요..
레코드수가 많은 놈은 속도가 40초가 넘네요.
쩝쩝...쿼리문을 손봐야하겠는데...
어떻게 손을 봐야 빨라질지..난감합니다.ㅠㅠ