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 27497 게시물 읽기
No. 27497
join 방법을 알고싶습니다.
작성자
표종현(떠돌이나그네)
작성일
2008-04-03 15:46
조회수
3,474
 
제가 아직도 초보라 어떻게 질문을 해야할지도 걱정이네요.. 직접 DB 스키마와 query를 보여드릴 수는 없고..
 
a 테이블에 약한 10만건정도.. b 테이블에 약한 9만건 정도 됩니다.
 
인덱스는 a 테이블에 domain 으로 잡혀 있구요 b 테이블에도 domain 으로 잡혀 있습니다.
 
제가 뽑고자 하는 정보는 a 테이블과 b 테이블에 중복되는 domain 을 제외한 a 테이블의 domain list를 뽑고 싶습니다.
 
mysql 버전은 5.0.45 구요..
 
두 테이블에서 domain 말고는 조건을 줄만한 값은 없는데요..
 
어떤식으로 가능할지 알려주시면 정말 감사하겠습니다.
이 글에 대한 댓글이 총 3건 있습니다.

select count(*) cnt from A left B on A.domain = B.domain 
where B.domain is not null

이걸 말하시건가요 ?
반화넬(반씨아찌)님이 2008-04-03 16:02에 작성한 댓글입니다.

저..

select count(*) cnt from A left B on A.domain = B.domain 
where B.domain is not null

이렇게 알려주셨는데요..

left 라는 부분이
left join 을 말씀하신거죠??

감사합니다.

그런데 음.. 인덱스를 걸어 놨는데도 무쟈게 오래걸리네요..

로컬 PC에서 설치해놓고 테스트 해봤는데.. 4초 이상 나와버리네요..

ㅠ.ㅠ

뭔가 좋은 방법 없을까요??

explain 을 보면

+----+-------------+-------+-------+---------------+------+---------+------------------+-------+--------------------------+
| id | select_type | table | type  | possible_keys | key  | key_len | ref              | rows  | Extra                    |
+----+-------------+-------+-------+---------------+------+---------+------------------+-------+--------------------------+
|  1 | SIMPLE      | b     | index | idx3          | idx3 | 767     | NULL             | 89207 | Using where; Using index |
|  1 | SIMPLE      | a     | ref   | idx1          | idx1 | 386     | db_cdms.b.domain |     1 | Using where; Using index |
+----+-------------+-------+-------+---------------+------+---------+------------------+-------+--------------------------+


이렇게 나옵니다.

왜 그리 늦을까요?? ㅠ.ㅠ

테이블 하나 full scan 한다고 해서 이렇게 늦을 수 있나요??
아니면 index를 못타게 해야할까요??
인덱스 안타니 역시 더 느리네요.. 5초대가 나옵니다.

뭔가 방법 없을까요??

표종현(떠돌이나그네)님이 2008-04-03 17:10에 작성한 댓글입니다.
이 댓글은 2008-04-03 17:24에 마지막으로 수정되었습니다.

left join 맞구요 .ㅋ 

A 테이블은 전체 DATA를 이용하는거라 . ALL 이 나올듯 합니다. 

만약 .. 보시려는 DATA 지속적으로 보실거라면. ~

5.0 버젼이니까 .. 트리거나 프로시져를 이용해서 ~
분산 기록 하는건 어떨까요 ?

A table : 전체 DATA
B table : A와 중복되는DATA
C table : A와 B테이블에 중복되지 않는 DATA 

등으로 분산해서 기록 하시는것. 생각해보시는것도 괜찮을듯 합니다. ~

반화넬(반씨아찌)님이 2008-04-08 16:29에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
27500테이블 조인? 필드 추가? 질문드립니다.
고재철
2008-04-04
3498
27499디비 서버 HA [1]
김승민
2008-04-04
3798
27498쿼리문중 조건에 대해서 질문 합니다..
강진우
2008-04-04
3383
27497join 방법을 알고싶습니다. [3]
표종현
2008-04-03
3474
27496mysql4.1.22 나 mysql5.0.x버전을 쓸려고 하는데요.. [2]
조원국
2008-04-03
3249
27495쿼리문 질문 드립니다. [1]
벤티지
2008-04-02
3057
27494mysql 각 사용자 용량제어 방법 [1]
삽질중
2008-04-02
3137
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다