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 30057 게시물 읽기
No. 30057
매일 중복없이 테이블값 매칭
작성자
최원길(lixman)
작성일
2011-09-09 17:24
조회수
7,996

회원1 table
id,name


회원2 table
id,name



랜덤매칭로깅 table
회원1(id), 회원2(id), 날짜



테이블이 이렇게 3개 있습니다.


매일 한번씩 회원1 회원2 id값을 중복없이 랜덤 매칭하려합니다.


select a.id, (select id from 회원2 where `회원2(id)` not in(select id from 랜덤매칭로깅 where `회원1` = a.id) order by rand() limit 1) from `회원1` a


이렇게 무식한 쿼리를 던지니까, rows가 적을 땐 별 문제 없으나,

1만건 이상 올라가니 DB가 뻣을려고 하네요.. (쿼리 실행시간이 15분 가량)



인덱스 걸린 상태에서 not in속도가 left조인보다 속도가 나은거 같아서 사용을 했는데
아무리 봐도 이렇게 쿼리를 써야 하는게 맞나 싶네요..



혹시 시원한 쿼리나 방법이 있을까 싶은데.. 조언 부탁드립니다.. ^^;;                                       

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

(select id from 회원2 b where not exists (select 1 from 랜덤매칭 c where c.회원1id = a.id and c.회원2id =b.id order by rand() limit 1)

이런식으로 하는 것이 조금 빠르 겠지만 order by rand() 때문에

index의 의미가 없어 속도가 나지 않을 것으로 보이네요.

박인호(paerae)님이 2011-09-28 15:03에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
30060공란을 0으로 불러오기 [1]
김양훈
2011-09-19
7241
30059데이터 축약정리 문의(Curser/Fetch/Procedure 관련) [2]
딘스
2011-09-18
8174
30058따옴표 문제...
정종영
2011-09-18
7138
30057매일 중복없이 테이블값 매칭 [1]
최원길
2011-09-09
7996
30056groupby로 특정 조건일때에만 합을 구하고 싶습니다. [1]
김성원
2011-09-09
8224
30055간단한 join 문제...도와주세요 ㅠ_ㅠ [1]
정종영
2011-09-05
7653
30054MySQL 데몬 실행시 에러... [1]
우리끼리
2011-08-31
8852
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다