아직 초보라 말이 약간 이상할 수도 있습니다 죄송합니다
쿼리공부중에 서브쿼리라는걸 알게되었고 from다음에 서브 쿼리가 오면 인라인뷰라고 하는 것도 알게되었습니다.
인라인뷰형태로 테스트를 해봤습니다. 그리고 결과값을 보니 바깥쪽 쿼리의 레코드와 서브쿼리쪽 레코드가 곱해져서
레코드가 몇만건으로 확 늘어났습니다..
여기서 첫번째 질문은 인라인뷰는 테이블대신 쿼리를 넣어 필터를 한번하고 그 필터되어진 레코드 내에서 다시 조건을 주어 레코드를
뽑아내는, 즉 레코드양이 많을 때 다 불러오지않고 필터를 한번 줘서 효율적으로 조회하기 위한 용도가 맞나요?
두번째 궁금한점은 위에서 제가 말한게 맞다면 인라인뷰 사용 시 레코드들이 곱해지게 되는데 이렇게 되면 레코드양이 많아져서
이부분은 또 비효율적인게 아닌가 의문이 생깁니다..모순이 아닌가..
인라인뷰를 사용하면 레코드들이 곱해지는게 일반적인 형태인건가요?!
아직 개념이 부족해서 이해안가는게 너무 많네요 ..
Comment 8
-
이리
2016.02.26 13:26
-
Blue2
2016.02.26 13:37
쿼리문은 이거입니다. 방금 깨달았는데 saleslt.customer b 이거때문에 그런거였네요..하하
인터넷보면서 따라하기식으로 하다보니 안써도되는걸 썼던거였네요
select count(*) as ascnt from
(select title, middlename from saleslt.customer where middlename='j.')
a, saleslt.customer b where b.title='mr.';
-
Blue2
2016.02.26 13:41
(select title, middlename from saleslt.customer where middlename='j.') a또 궁금한점이 있는데 서브쿼리다음에 나오는 a는 지정안해주면 조회가 안되던데 이름을 꼭 지정해줘야하는건가요?! -
Terry
2016.02.26 13:46
네 지정을 해주셔야 되요..^^
오라클은 안해도 되는거 같긴하던데..(사용해본건 아니지만-,-;;;)
MSSQL 은 인라인뷰의 경우 ALIAS 지칭을 해줘야 사용가능합니다.
-
Blue2
2016.02.26 13:51
감사합니다ㅎ 혼자 공부하기 어렵네요 흑
-
건우아빠
2016.02.26 14:01
이 서브 쿼리는 멀티 컬럼 반환이기에 발생하는 문제입니다.
-
Blue2
2016.02.26 14:09
넵 확실히 이해한 것 같습니다 감사합니다!
-
항해자™
2016.02.26 17:20
cross join 형태로 사용하셔서 데이터가 많이 나오는 것 같네요,,,
ON절로 JOIN 조건이 들어간건가요?