인프런 커뮤니티 질문&답변

June Oh님의 프로필 이미지
June Oh

작성한 질문수

데이터 분석 SQL Fundamentals

서브 쿼리 실습 - 02

온라인? 인라인?

작성

·

278

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

강사님 특정 쿼리 방식이 '어떨 때' 주로 사용된다고 말씀하시면서 온라인 혹은 인라인 이라고 언급하신것같은데... (6:46 쯤)

"온라인" 거래 관련 데이터를 다룰 때 상관 서브쿼리를 주로 사용한다는 말씀이셨을까요?

 

답변 1

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

서브쿼리는 온라인, 즉 OLTP(Online Transaction Processing)성 쿼리에서 주로 사용됩니다.

제가 표준 용어가 아니라 업계(?)용어를 사용해서 살짝 혼돈을 드린것 같습니다.

보통 SQL은 처리하는 데이터 량에 따라서 OLPT성 쿼리 또는 OLAP/배치/분석로 나눕니다.

OLTP성 쿼리는 주로 인덱스를 기반으로 작은 데이터를 빠르게 가져오는 행태를 가지는 쿼리를 의미합니다. 우리가 웹/앱에서 사용하는 대부분의 쿼리는 OLTP 쿼리입니다. 가령 개인 아이디로 주문한 상품을 본다거나, 개인 상품 결재를 한다거나, 개인 계좌의 정보를 본다거나 하는 작업을 하는데 사용됩니다. 일반적으로 사용자 아이디, 서비스 계정등을 키값으로 하여 데이터를 빠르게 추출하는 행태로 동작합니다.

반면에 분석 SQL이나 OLAP(Online Analytical Processing), 배치 SQL등은 주로 대량의 SQL을 기반으로 합니다. 몇건이 대량이냐는 기준은 없지만 OLTP는 PK 레벨 정도의 개별 KEY를 기반으로 SQL이 이뤄지지만 분석 SQL은 전체 테이블이나 특정 섹션, 또는 특정 기간을 기반으로 합니다.

OLTP는 인덱스가 매우 중요하지만 분석 SQL은 대량의 데이터를 선택하기 때문에 인덱스는 크게 중요하지 않습니다.

그래서 서브쿼리는 분석SQL에서 잘 사용되지 않습니다. Analytic Function이 나오기 전까지만 해도 분석 SQL에서도 사용되었습니다. 하지만 분석 SQL에서 대부분의 서브쿼리는 Analytic Function이나 Group by를 이용하면 다 대체될 수 있습니다. 그리고 서브쿼리는 메인 쿼리에 값을 전달하지 못하므로 자연적으로 분석 SQL에서 활용도가 적어지게 되었습니다.

강조해서 말씀드리지만, 서브쿼리는 SQL에서 매우 중요합니다. 서브쿼리가 문제가 있어서 분석 SQL에서 사용하지 않는것이 아니라 위에서 언급한 사항으로 인해 자연스럽게 분석 SQL에서 활용이 멀어진것 뿐입니다.

감사합니다.

 

June Oh님의 프로필 이미지
June Oh

작성한 질문수

질문하기