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
운영게시판
최근게시물
MS-SQL Q&A 6858 게시물 읽기
No. 6858
디비 쿼리 질문드립니다.!
작성자
이성주
작성일
2014-10-20 18:34
조회수
6,271

 

안녕하세요. 웹페이지를 만드는중 DB 쪽 문제가 발생 했습니다 ... 차근차근 공부를 해야겠지만 일단 급한 불부터 끄기위해 질문 드립니다.

테이블이 다음과 같이 구성되어 있고요 

SELECT * FROM user u WHERE u.pid > 11 ORDER BY create_date LIMIT 0, 5 

타음 쿼리를 통해 다음과 같은 결과가 나왔습니다.

결과값의 pid 를 통해 upload 테이블의 post_pid 와 file_server 테이블의 file_server_addr 까지 조회를 해야하는 상황입니다.

조건은 다음과 같습니다.

user.pid == user_info.user_pid

user_info.upload_pid == upload.pid

upload.file_server_pid = file_server.pid 

 

일단 정신없이 JOIN 을 걸면 원하는 결과는 나오는데 추후에 성능에 엄청난 영향이 있을것 같아서요 다른 방법이 있는지 여쭤봅니다.

일단 조인을 사용한 쿼리입니다

SELECT uu.id, up.posts_pid, fs.server_addr FROM (SELECT * FROM user u WHERE u.pid > 11 ORDER BY create_date LIMIT 0, 5) uu

LEFT OUTER JOIN user_info ui ON uu.pid = ui.user_pid

LEFT OUTER JOIN upload up ON ui.upload_pid = up.pid

LEFT OUTER JOIN file_server fs ON up.file_server_pid = fs.pid;

결과 : 

 

긴글 읽어주셔서 감사합니다.

 

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

RDB는 그렇게 쓰는 겁니다.

user 테이블에 pid, create_date에 인덱스 걸려있고
user_info 테이블에 user_pid 인덱스 걸려있고
upload 테이블에 pid 인덱스 걸려있고
file_server 테이블에 pid 인덱스 걸려 있는지 확인하시구요

upload됐으면 file_server정도는 반드시 있지 않을까요? 그렇다면 INNER JOIN으로 좀 바꿔 주시고
(요거랑 유사하게 INNER로 바꿀 수 있는 것이 있다면 고려해보세요)

(근데 LIMIT 문법이 있는 걸 보니 게시판 번지가 조금 틀린거 같긴 하지만요.. ㅋ)

우욱님이 2014-10-20 22:59에 작성한 댓글입니다. Edit

감사합니다!

보통 이렇게 사용하는군요 ... 

INNER JOIN 사용시 더 빠른 처리가 가능한가요 ?. 궁금 ㅎㅎ

이성주님이 2014-10-21 17:02에 작성한 댓글입니다. Edit

LEFT OUTER JOIN의 정의 자체가 INNER JOIN으로 처리되지 않은 왼쪽 애들도 결과에는 보여줘야 하므로 뭔가 할 일이 더 많아진다는 것이 보통의 의견이고, 실제로 실험 결과에서는 차이가 나지 않는 경우도 많지만 성능이 2배 가까이 차이나는 예도 있으므로 INNER JOIN으로 동일한 결과를 얻을 수 있다면 굳이 LEFT OUTER JOIN보다는 INNER JOIN으로 해결하는 것이 좋겠습니다.

 

우욱님이 2014-10-21 17:42에 작성한 댓글입니다. Edit

 감사 감사합니다 ㅎㅎ

이성주님이 2014-10-22 00:38에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
6861조회 합산 [4]
초보
2014-10-21
5467
6860mssql 2008 설치문의드립니다. [3]
박세민
2014-10-21
6214
6859NULL 인식문제.. [2]
우암
2014-10-20
5890
6858디비 쿼리 질문드립니다.! [4]
이성주
2014-10-20
6271
6857MSSQL 쿼리 질문드립니다. [7]
학생
2014-10-20
7330
6856쿼리나 프로시저 작성 부탁합니다. [3]
정인수
2014-10-15
6108
6855mssql 에서 select 시 레코드 결과 수 지정 [2]
송영미
2014-10-14
5828
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다