SQL (4) 썸네일형 리스트형 SQL에서 IN, NOT IN vs EXISTS, NOT EXISTS 차이 — 그리고 NULL에 대한 함정 SQL에서 서브쿼리를 사용할 때 NOT IN과 NOT EXISTS는 자주 혼용되지만, 두 연산자는 내부적으로 전혀 다른 방식으로 작동한다. 특히 서브쿼리 결과에 NULL이 포함될 경우, 이 차이는 실질적인 결과의 차이로 이어지며, 예상치 못한 버그를 유발할 수 있다.본 문서에서는 NOT IN과 NOT EXISTS의 개념적 차이뿐 아니라 IN, EXISTS와의 비교, 그리고 NULL이 포함된 경우의 동작 방식까지 예제를 통해 알아보자.1. IN vs EXISTS, NOT IN vs NOT EXISTSININ은 서브쿼리 결과 또는 값 리스트에 포함되는지 여부를 비교한다. 리스트형 비교로 이해할 수 있다.SELECT * FROM employees WHERE department_id IN ( SELECT .. RDB에서 페이징 쿼리의 중요성과 LIMIT, OFFSET 방식의 장단점 대용량 데이터를 처리할 때, 페이징(Paging)은 데이터 전달 효율성과 사용자 경험 개선을 위한 필수 기능입니다. 이 글에서는 RDB 환경에서 많이 쓰이는 LIMIT, OFFSET 기반 페이징의 작동 방식과 함께, 실제 상황에 적용할 수 있는 예제를 통해 장단점을 구체적으로 살펴보겠습니다.1. 페이징 쿼리란?페이징은 데이터를 일정 단위로 분할하여 조회하는 기법입니다. 대부분의 UI는 한 화면에 모든 데이터를 출력하지 않고, 페이지 또는 무한 스크롤 방식으로 일부만 보여줍니다.예를 들어 게시글 목록을 보여줄 때 다음과 같은 SQL을 사용할 수 있습니다:SELECT * FROM posts ORDER BY created_at DESC LIMIT 10 OFFSET 20;최신 게시글을 기준으로 3번째 페이지(1.. 오라클 SQL 최적화를 위한 Oracle 인덱스 힌트(Index Hint) 사용법과 예제 1. Oracle 힌트(Hint)란?Oracle 힌트는 SQL 문에 대한 실행 계획을 옵티마이저에게 직접 지시하는 기능입니다. 이를 통해 특정 인덱스를 강제로 사용하게 하거나, 조인 방식 등을 지정할 수 있습니다.힌트는 /*+ HINT_NAME */ 형식으로 작성되며, 일반적으로 SELECT, INSERT, UPDATE, DELETE 문과 함께 사용됩니다.2. 인덱스 관련 Oracle 힌트 종류Oracle에서는 특정 인덱스를 사용하도록 유도하는 다양한 힌트를 제공합니다. 아래는 대표적인 힌트 목록입니다. 2.1 INDEX 힌트특정 인덱스를 사용하도록 강제하는 힌트입니다.사용법:SELECT /*+ INDEX(emp emp_idx) */ * FROM emp WHERE deptno = 10;설명:emp 테이블.. ORACLE 로또 번호 추출하기 - 로또 SQL - 로또 쿼리 구성 SELECT LEVELFROM DUALCONNECT BY LEVEL 일단 45까지의 계층을 나눈다.1~45 까지의 행이 생길텐데 얘를 한 그룹으로 만들어 주기 위해 1~45 까지 1 그룹, 46~90 까지 2 그룹.. 이런식으로 나누기 위해 LEVEL 을 45로 나누고 CEIL (올림함수) 를 사용하여 그룹을 나눈다. SELECT CEIL(LEVEL / 45)FROM DUALCONNECT BY LEVEL 그럼 1~45번 까지 1로 묶였고, 46~90 까지는 2로 세팅한다. 이제 그룹별 랜덤 자연수 (1~45) 를 지정해야하니 MOD(LEVEL - 1, 45) + 1 로 수를 나열한다. 그룹별 그리고 랜덤함수를 사용하여 어센딩 해준다. SELECT CEIL(LEVEL / 45.. 이전 1 다음