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 4064 게시물 읽기
No. 4064
explain 쿼리에 대해서 질문입니다 =.=;
작성자
소타
작성일
2002-03-05 01:35
조회수
1,269

제가 어떤 테이블하나를 놓고 그 테이블과 관련된 테이블 5개를 left join 시켰습니다.

한 쿼리에 6개의 테이블이 사용된건데요.

쿼리를 여러번 할까 한번의 쿼리로 할까 하다가 한번에 하는것이 코딩에도 좋고 그래서 한번에 하도록 했는데요.

 

left join 6번

컬럼(!)=컬럼 10여번

order 를 3개의 컬럼을 ASC로 정렬

 

이렇게 복잡하게 쿼리를 explain으로 돌려보니 참 희한한 결과가 나오더군요 =_=;

 

asp=# explain SELECT (가져올컬럼들)

asp=# from tb_templet t left join tb_tem_html th on t.no=th.no

asp=# left join tb_tem_section_data tsd on tsd.no=t.no

asp=# left join tb_cont_n c on c.no=tsd.cont_no and c.able > '0'

asp=# left join tb_tem_vote tv on tv.no=t.no and tv.able='1'

asp=# left join tb_tem_vote_data tvd on tvd.relate=t.no and tvd.types='Q'

asp=# where t.id='ID' and t.s='index' and t.able='1'

asp=# order by t.seq, t.type, t.no;

NOTICE: QUERY PLAN:

 

Sort (cost=404.80..404.80 rows=333 width=120)

-> Merge Join (cost=350.83..390.83 rows=333 width=120)

-> Merge Join (cost=281.00..301.00 rows=333 width=92)

-> Sort (cost=211.18..211.18 rows=333 width=84)

-> Merge Join (cost=180.71..197.21 rows=333 width=84)

-> Sort (cost=110.88..110.88 rows=100 width=66)

-> Merge Join (cost=35.93..107.56 rows=100 width=66)

-> Index Scan using tb_tem_section_data_pkey on tb_tem_section_data tsd (cost=0.00..59.00 rows=1000 width=8)

-> Sort (cost=35.93..35.93 rows=10 width=58)

-> Nested Loop (cost=0.00..35.76 rows=10 width=58)

-> Seq Scan on tb_templet t (cost=0.00..27.50 rows=1 width=42)

-> Index Scan using tb_tem_html_pkey on tb_tem_html th (cost=0.00..8.14 rows=10 width=16)

-> Sort (cost=69.83..69.83 rows=1000 width=18)

-> Seq Scan on tb_cont_n c (cost=0.00..20.00 rows=1000 width=18)

-> Sort (cost=69.83..69.83 rows=1000 width=8)

-> Seq Scan on tb_tem_vote tv (cost=0.00..20.00 rows=1000 width=8)

-> Sort (cost=69.83..69.83 rows=1000 width=28)

-> Seq Scan on tb_tem_vote_data tvd (cost=0.00..20.00 rows=1000 width=28)

 

EXPLAIN

 

다른 쿼리들은 간단간단한데 유독 이 쿼리만 복잡해야하거나 나눠서 해야만 하는 쿼리입니다.

그리고 나눠서 한다면 코딩이 일반적으로 쿼리를 나누는것보다 훨씬 복잡해져야 하고요 =_=;

제가 explain 내용을 길게 뿌렸는데요.

 

저정도 수치가 나온다는건 좋은건가요 않좋은 건가요?

 

저 쿼리말고 다른 쿼리는

Limit (cost=30.01..30.01 rows=1 width=70)

-> Sort (cost=30.01..30.01 rows=1 width=70)

-> Seq Scan on tb_cont_n (cost=0.00..30.00 rows=1 width=70)

이정도 나옵니다.

 

데이터는 거의 없는 상태이고요.

집에 있는 테스트 서버서 돌려본건데 셀400에 ZX보드, 128메가램 입니다.

사양이 않좋다지만 페이지당 평균 10~20회정도 쿼리를 해야는데 페이지 로딩이 PHP계산 포함 1초가 약간 안걸립니다.

postgres를 이곳에 있는 문서를 보고 공유메모리를 늘려줬는데도 이정도가 되니 실제로 펜3 급의 서버에서 돌릴때는 얼마나 속도가 나올런지 의문이네요 -.-;;;

너무 느리면 서비스 자체가 불가능하지 않을까 합니다 =_=;

 

젤 위의 쿼리를 나누는것이 좋을까요. 아니면 저대로 쓰되 쿼리를 좀 간결하게 하는것이 좋을까요?

답변 부탁드립니다~ :)

[Top]
No.
제목
작성자
작성일
조회
4070[질문] from 절의 subquery 에 관하여 [2]
송동수
2002-03-11
1250
4069[질문] PHP + Qmail + PostgreSQL + IMAP = Webmail
김태문
2002-03-11
1111
4071┕>Re: [질문] PHP + Qmail + PostgreSQL + IMAP = Webmail [1]
김대성
2002-03-12 13:15:49
1200
40682개의 DB를 만들었는데.. [1]
주피터
2002-03-09
1059
4064explain 쿼리에 대해서 질문입니다 =.=;
소타
2002-03-05
1269
4061Unable to connect to PostgreSQL server... [3]
향이
2002-03-04
1411
4060ORDER BY column (DESC) 속도차이 질문입니다.
소타
2002-03-04
1517
4063┕>Re: 리스팅을 위한 인덱싱으로는 btree를 씁니다. [1]
김상기
2002-03-04 22:07:03
1365
4058postgresql [1]
김상규
2002-03-02
1119
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.025초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다