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
운영게시판
최근게시물
MySQL Q&A 30095 게시물 읽기
No. 30095
union 쿼리 문의 드립니다.
작성자
김영범(bumworld)
작성일
2011-10-25 16:35
조회수
8,080
table tb_board(
board_no integer
, contents varchar(250)
, user_no integer
, register date
, primary key (board_no)
);
 
table tb_board_send(
board_no integer
, user_no integer
, primary key (board_no, user_no)
);
 
SELECT a.* 
  FROM  tb_board a, 
       (SELECT a.board_no 
         FROM  tb_board a 
        WHERE a.display_yn = 'Y' 
              AND a.user_no = 10 
             UNION 
       SELECT a.board_no 
         FROM  tb_board_send a 
        WHERE a.user_no = 10 
       ) b 
 WHERE a.board_no = b.board_no 
 
 
글 테이블이 tb_board이고 참조된 사용자 테이블이 tb_board_send 입니다.
 
사용자가 작성한 글과 작성하지는 않았지만 참조된 글의 리스트를 뽑는 쿼리입니다.
 
두개의 테이블에는 글 번호와 작성자, 그리고 참조자 번호가 각각 들어가 있습니다.
 
조인으로도 가능 할것 같은데 당장 나오는 쿼리는 union으로밖에는 생각이 안납니다..-_-''
 
데이타는 아래와 같이 존재 합니다.
 
글이 많이 쌓일수록 느려질거 같은데 좋은 방법이 없을까요?

 

tb_board

board_no user_no
11 10
12 10
13 8
14 9
 
 
tb_board_send
board_no user_no
11 18
12 7
13 10
 
result user_no = 10
board_no
11
12
13
이 글에 대한 댓글이 총 2건 있습니다.

주신 설계로는 두 테이블의 union (all) 뿐인듯한데요

성능이라면 index를 user_no에 걸어두시는 것으로 해결하셔야 할 듯하네요

 

.님이 2011-10-26 16:55에 작성한 댓글입니다. Edit

 답변 감사합니다.

 

구조를 바꾸던가 아니면 기존 방식대로 가던가 해야 겠네요.

김영범(bumworld)님이 2011-10-27 18:31에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
30098CPU 점유율이 너무 높아서 DB가 버벅거립니다. [1]
김용덕
2011-10-26
9251
30097알수없는 Mysql restart .. 조언구합니다. [3]
조재호
2011-10-26
8015
30096MySQL DOUBLE형 버그
박종선
2011-10-26
8041
30095union 쿼리 문의 드립니다. [2]
김영범
2011-10-25
8080
30093table 생성문 뽑는거.. show create table 말고 [2]
좋아요
2011-10-25
7098
30087윈도우 mysql4 케릭터셋 관련 [2]
박의호
2011-10-24
7768
30084테이블 분리 ? [1]
장사꾼
2011-10-20
8123
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다