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
운영게시판
최근게시물
PostgreSQL Q&A 8539 게시물 읽기
No. 8539
distinct 외에 다른 방법으로 중복을 걸러낼 수 있는 방법이 없는지요.
작성자
김대헌(terisss)
작성일
2009-11-16 20:40ⓒ
2009-11-16 20:45ⓜ
조회수
7,379

    select 
     dev,case when (b.max_bps is null) then 0 else b.max_bps end as max_bps
    from
     (select distinct(dev) from log_statvoiptraf_day_dummy  where hostname = 'test_gw1' and day >= '20091016' and day <= '20091116')
     as a left outer join
     (select nicname,max_bps from nic where hostname = 'test_gw1') as b on a.dev = b.nicname 


위의  쿼리는 잘 사용이 되고 있습니다.  그런데 문제가 이쿼리문을 포함하여  두번 정도 join 을 사용하는데요. 데이타가 10만건 정도되면
매우 심하게 느려집니다. 
확인해보니 distinct(dev) 이부분에서 문제가 발생했습니다. 

select distinct(dev) from ~~~~  여기서 나오는 값이 'A','B' 로 가정할 경우   직접 select 'A'  as dev  union all select 'B' as dev 
값을 넣으면 몇초만에 결과가 나옵니다.  하지만 select distinct(dev) from  구문을 넣으면 5분이 지나야 겨우 나올까 말까 합니다. 

group by 도 비슷한 결과 였습니다.  혹시 다른 방법으로 중복을 걸러낼 수 있는 방법이 있는지 혹은 다른 방법으로 해결할 수 있는지
조언 부탁 드립니다.

    

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

저도 잘은 모르지만 쿼리의 값을  변경해보시면서 조인의 형태를 바꿔보시는게 어떨까합니다.  인덱스가 제대로 타는지 확인해보시면서 쿼리를 튜닝하셔야 할 것 같습니다. explain analyze 문을 쿼리문 앞에 붙여서 실행해 보세요.

김대청(dcmru)님이 2009-12-08 15:51에 작성한 댓글입니다.
이 댓글은 2009-12-08 15:52에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
8542신규 데이터를 참조하여 자동 생성? [4]
souler
2009-11-19
7265
8541쿼리 질문한번더 드립니다 [4]
김영준
2009-11-17
7299
8540각각의경우의값의 합을 구하고싶습니다 [2]
김영준
2009-11-17
7038
8539distinct 외에 다른 방법으로 중복을 걸러낼 수 있는 방법이 없는지요. [1]
김대헌
2009-11-16
7379
8538압축을 이용한 Restore 명령어 [2]
공대인
2009-11-12
7263
8537select로 인한 postgres 부하 [4]
초보
2009-11-11
9217
8536간단한 Postgresql용 쿼리 툴을 소개 부탁드립니다. [3]
박춘삼
2009-11-05
10529
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다