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 30720 게시물 읽기
No. 30720
code값 치환 관련 쿼리 질문.
작성자
열혈파넵
작성일
2014-04-28 14:11
조회수
9,385

 안녕하세요. 초급 개발자 입니다.

쿼리 작성중에 문의사항이 있어서 이렇게 도움을 요청합니다.

 

질문 :  Table A, B, C(코드 관리 TABLE) 가 있습니다.  

A와 B는 서로 f key 로 연결되어 있어서 조인을 해서 필요한 컬럼값을 가져 오고 있습니다.

이렇게 조인을 통해서 가져온  컬럼값중에 B Table 에 있는 CODE 값을 매핑되어 있는 값으로 치환해서 client로 보내주려고 하는데 

좋은 해결 방법이 있으면 좀 알려주세요.

지금 제가 임시적으로 사용한 방법은

SELECT A.some, 

               B.some,

               (select code_nm from C where B.code = C.code)

FROM A, B

WHERE A.key = B.key

AND A.something = ?.

이렇게 해서 원하는 답이 나오기는 하는데 이렇게 쿼리를 짜면 성능이 많이 떨어진다고 해서 

이런경우 주로 사용하는 해결법에 대해서 알고 싶습니다.

 

감사합니다.

이 글에 대한 댓글이 총 1건 있습니다.
열혈님이 작성하신 SQL 중 'code_nm'을 가져오는 query를 correlated sub-query라고 하는데 MySQL에서 correlated sub-query의 성능이 매우 나쁩니다. SELECT의 결과 레코드 개수만큼 correlated sub-query가 수행되기 때문입니다.
 
code_nm을 가져오는 SELECT에 LIMIT 1이 없는데도 잘 수행 중이라면 B.code:C.code의 관계가 1:1인 것 같습니다.
 
그렇다면 다음과 같이 바꾸면 되지 않을까 싶은데요.
 
    SELECT A.some, B.some, C.code_nm
    FROM A INNER JOIN B ON A.key = B.key
      INNER JOIN B.code = C.code
    WHERE A.something = ?
 
원하는 결과가 나오지 않는다면, http://www.sqlfiddle.com/ 에서 샘플 스키마와 데이터를 올릴 수 있습니다. 데이터를 올려주시면 좀 더 테스트가 쉽습니다.
 
허정수(wertyu)님이 2014-04-28 14:37에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
30724두개에 데이블 조인해서 합산하기 [2]
김양훈
2014-05-15
9486
30723MySQL 트렌젝션사용예제인데 문제점있을까요?
이재식
2014-05-07
9736
30721mysql 5.1.4버젼사용중 select [2]
이재식
2014-04-30
9443
30720code값 치환 관련 쿼리 질문. [1]
열혈파넵
2014-04-28
9385
30719컨넥션 연결이 제한되는 것 같습니다..도움부탁드립니다. [3]
entest
2014-04-18
14078
30718[질문] query 가능하신분 조언 부탁드립니다. [1]
안동석
2014-04-14
9477
30716[건의] MariaDB용 별도의 게시판이 있으면 좋겠는데 말입니다. [6]
MariaDB
2014-04-09
10514
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다