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 31018 게시물 읽기
No. 31018
대용량 테이블에서 count 하기
작성자
오도훈(kodachrome)
작성일
2017-01-06 12:21:55
조회수
2,608

 약 100만개의 레코드를 가지고 있는 A, B 두개의 테이블이 있습니다. 

두개의 테이블 구조는 정확하게 같고, PERSON_ID, AGE, SEX 등... 14개의 필드를 가지고 있습니다

PERSON_ID 가 두개의 테이블에서 각각 유니크 합니다.

A, B 테이블에 있는 PERSON_ID 들이 99% 정도는 같고 1% 정도가 다릅니다. 

같은 PERSON_ID의 갯수와 같지 않은 PERSON_ID의 갯수를 확인하기 위해서 아래와 같은 쿼리를 시행하였습니다.

 

SELECT count(*) from B

WHERE B.PERSON_ID

NOT IN

(SELECT A.PERSON_ID from A)

 

이렇게 하니까 5초만에 9437 이라는 결과를 줍니다.

그런데....

 

SELECT count(*) from B

 

WHERE B.PERSON_ID

IN

(SELECT A.PERSON_ID from A)

 

이렇게 NOT IN 을 IN 으로 바꾸어서 쿼리를 실행하니까 20~30분이 지나도록 결과를 내지 못합니다. 

 

SELECT count(*) from B

INNER JOIN A

ON B.PERSON_ID = A.PERSON_ID

이렇게 조인을 이용해도 20~30분 지나도 결과를 얻지 못했습니다.

 

왜 그런건가요? 두개의 테이블에서 같은 PERSON_ID의 갯수를 세는 좋은 방법은 무엇인지요?

두개의 테이블은 csv 파일을 mysql db에 넣은 거라 key나 index 가 설정되어 있지 않습니다.

감사합니다.

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

SELECT COUNT(*)
FROM
(SELECT DISTINCT A.PERSON_ID FROM A
INTERSECT
SELECT DISTINCT B.PERSON_ID FROM B);

 

MySQL 에는 INTERSECT 가 없으므로


SELECT COUNT(*) FROM
(SELECT DISTINCT A.PERSON_ID
FROM A
WHERE A.PERSON_ID IN (SELECT DISTINCT B.PERSON_ID FROM B));

이철우(leechw9)님이 2017-01-06 14:42:17에 작성한 댓글입니다.
이 댓글은 2017-01-06 14:57:31에 마지막으로 수정되었습니다.

답글 감사합니다. 아직 해결되지는 못하였습니다만,,,

error code 1248 every derived table must have its own alias

이런 에러가 나면서 쿼리 실행이 안되는군요.

아마

SELECT COUNT(*) FROM 뒤에 오는 것에 대한 alias를 설정하라는 소리인듯 하긴 한데...

혹시 도움주실수 있으면 추가 댓글 부탁드립니다.

오도훈(kodachrome)님이 2017-01-06 16:57:28에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
31022mysql 쿼리 확인 요청드립니다.
홍준희
2017-01-24
2695
31021쿼리 튜닝 요청 [6]
황성균
2017-01-23
2757
31020나이대 구하기 [2]
궁그미
2017-01-20
2313
31018대용량 테이블에서 count 하기 [2]
오도훈
2017-01-06
2608
31017FULLTEXT 검색 관련 문의 드립니다.
임재송
2017-01-06
1943
31016DB에서 각 ID(키) 별 최신 연도의 특정 값들을 합하는 쿼리를 만들고 싶습니다. [2]
오모씨
2017-01-05
1946
31013c로 mysql 연동하고있는데 문제 해결이안되서 글올립니다. [1]
임윤택
2016-12-09
2645
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2017 DSN, All rights reserved.
작업시간: 0.071초, 이곳 서비스는
	PostgreSQL v9.6.3으로 자료를 관리합니다