Mysql µ¥ÀÌÅͺ£À̽º Äõ¸® Áú¹®

djkneg883   
   Á¶È¸ 870   Ãßõ 0    

아래와 같이 테이블이 2개 있을 때 사과, 맥주품목의 영수증번호를 뽑고 싶습니다.

SELECT 영수증번호 FROM 테이블 A ta INNER JOIN 테이블 B tb on ta.영수증번호 = tb.영수증번호 WHERE b.품목 = '사과' or b.품목 = '맥주';

위 처럼 쿼리를 날리면 결과가

쿼리결과: a, a , c , c, d

이렇게 나오는데 distinct 를 쓰지 않고 결과를 a,c,d만 뽑을 수 있도록하는 속도를 빠르게 할 수 있는 쿼리가 어떻게 될까요? 

원하는 결과: a, c, d

지금 단순하게 테이블을 작성해놨는데 칼럼이 여러개이고 데이터가 테이블A에 50만개정도 테이블 B에 150~500만개정도 쌓였을 때 distcint를 하고 order 를 쓰면 속도가 느릴것 같아서 여쭤봅니다.


테이블 A

영수증번호금액
a500
b1000
c2200
d3000


테이블 B

영수증번호품목
a사과
a맥주
b수박
c사과
c맥주
c포도
d사과
d키위
ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
Zer0 2023-03
group by
     
Zer0 2023-03
±Ùµ¥ ¼ÓµµÂ÷À̳ª ¼º´ÉÀº º° Â÷À̾øÀ»µí Çϳ׿ä distinct¶û.
windfantasia 2023-03
group by 1Ç¥ Ãß°¡.
´Ù¸¥ Á¶°ÇÀÌ ¾ø´Ù¸é
SELECT DISTINCT ¿µ¼öÁõ¹øÈ£ FROM Å×À̺íB WHERE Ç°¸ñ IN ('»ç°ú','¸ÆÁÖ')

Á¶È¸ Á¶°Ç, INDEX ¿¡ µû¶ó Äõ¸®´Â ´Þ¶óÁö±â ¶§¹®¿¡
ÀÌ·¸°Ô ¹®ÀÇÇÏ½Ã¸é ¿øÇϽô ´äÀº ¹Þ±â Èûµå½Ç µí
¸ÓÇÏÁö 2023-03
EXISTS ?
ºÎ¸ð Å×À̺í Á¶È¸¿¡
ÀÚ½Ä Å×À̺í üũ Á¶°ÇÀ» Ãß°¡ÇÒ °æ¿ì
exists ¸¦ »ç¿ë Çϸé ÁÁÀº ¼º´ÉÀ» ³»´Â °æ¿ì°¡ ¸¹½À´Ï´Ù.
(¾Õ¿¡¼­ À̾߱⠵å·ÈµíÀÌ Á¶È¸ Á¶°Ç, INDEX¿¡ µû¶ó ´Þ¶óÁü)

SELECT ¿µ¼öÁõ¹øÈ£
FROM Å×À̺íA a
WHERE EXISTS (
SELECT 1
FROM Å×À̺íB b
WHERE b.¿µ¼öÁõ¹øÈ£ = a.¿µ¼öÁõ¹øÈ£
AND b.Ç°¸ñ IN ('»ç°ú','¸ÆÁÖ')
LIMIT 1
)
     
djkneg883 2023-03
³× Ç×»ó ÁÁÀº ´äº¯Áּż­ °¨»çÇÕ´Ï´Ù. Çѹø ½ÃµµÇغ¸°Ú½À´Ï´Ù!!
     
ÁÁÀº ´äº¯À» ´Þ¾ÆÁֽô±º¿ä.^^
´öºÐ¿¡ QnA°¡ dz¼ºÇØÁö°í ÀÖ½À´Ï´Ù.


QnA
Á¦¸ñPage 221/5591
2015-12   1039943   ¹é¸Þ°¡
2014-05   4487263   Á¤ÀºÁØ1
2023-03   1506   È­¶õ
2023-03   1540   ¼öÆÛ½ÎÀ̾ð
2023-03   1872   ±èµ¿ÀÚ¸Ç
2023-03   1569   ¯´Ô
2023-03   1194   2CPUÃÖÁÖÈñ
2023-03   1455   ¹«½î»Ôó·³
2023-03   1882   ·ù·ù·ù
2023-03   1349   Àü¼³¼ÓÀǹ̡¦
2023-03   1358   ¹üÀÌ´Ô
2023-03   970   °³±Ã±Ý
2023-03   1582   Çã¹Ö¹öµå
2023-03   1046   ¹Ì´ã
2023-03   987   LevinF
2023-03   1275   galaxyfamily
2023-03   1163   ÀÌÈñÁÖ
2023-03   1477   inquisitive
2023-03   1541   yummy
2023-03   2666   ¸¸°õÀÌ
2023-03   1601   yummy
2023-03   1481   yummy