일단 예시 테이블들 입니다.


예시 테이블1


예시 테이블1 구성 정보



ex_fk는 예시 테이블2의 ex_fk_id를 외래키로 가집니다.


예시 테이블2


예시 테이블2 구성 정보



case1. 테이블1에서 ex_col1의 데이터로 A, B를 모두 가지고 있는 ex_fk 값을 뽑아내고 싶을 경우.
case2. 테이블1에서 ex_col1의 데이터로 A, B, C를 모두 가지고 있는 ex_fk 값을 뽑아내고 싶을 경우.


case1에서
SELECT ex_fk FROM mydb.example_table as A INNER JOIN mydb.example_table as B ON ( A.ex_col1 = "A" AND B.ex_col1="B" ) AND ( A.ex_fk = B.ex_fk );


case2에서

SELECT ex_fk FROM mydb.example_table as A INNER JOIN mydb.example_table as B INNER JOIN mydb.example_table as C ON A.ex_col1 = "A" AND B.ex_col1="B" AND C.ex_col1="C" ) AND ( A.ex_fk = B.ex_fk AND B.ex_fk = C.ex_fk );

이런 식으로 쿼리문을 작성하면 결과는 잘 나옵니다.


제가 궁금한 것은


1. 만약 데이터의 양이 몇 만, 몇십 만으로 방대해 진다면 이러한 쿼리가 효율적인지, 더 나은 방법이 있을지

2. column에 데이터로 A, B, C, D, E를 모두 가지고 있는 ex_fk 값을 뽑아내려 한다면 위에 방식대로 지속적인 INNER JOIN과 조건문에 AND 연산자를 추가해야 되는지


에 대한 부분입니다.