사용자로부터 입력 받은 SQL 구문을 분석어떤 순서로 기억장치의 데이터에 접근할지 결정이때 결정되는 계획을 실행 게획이라고 하고, 이 실행 계획을 기반으로, 데이터에 접근하는 방법을 접근 메서드라고 한다.버퍼를 관리하는 역할디스크 용량 매니저와 함께 연동되어 작동버퍼:
OR 조건을 굉장히 많이 지정해야 할 때, 아래와 같이 쓸 수 있지만 IN 을 사용한다면 가독성 좋은 SQL문을 작성할 수 있다.아래와 같이 작성하면, 실행 결과는 같지만 깔끔하게 바꿀 수 있다.전화번호가 없는 사람만 선택하는 SQL문을 작성하고 싶다면 어떻게 해야 할
UNION을 사용한 조건 분기는 WHERE 구만 조금씩 다른 여러 개의 SELECT 구문을 합쳐서, 복수의 조건에 일치하는 하나의 결과 집합을 얻고 싶을 때 사용한다.외부적으로는 하나의 SQL 구문을 실행하는 것처럼 보이지만, 내부적으로는 여러 개의 SELECT 구문을
COUNTSUMAVGMAXMIN아래와 같은 테이블이 있다고 가정아래 테이블은 data_type마다 사용하는 data_n가 다르다A: data_1~data_2B: data_3~data_5C: data_6data가 너무 흩어져 있어, 한 사람의 정보가 같은 레코드에 들어있
성능 성능 성능 성능이다.처리 횟수 \* 한 회에 걸리는 시간 인데, 한 회에 걸리는 시간은 일정하다 하더라도, 처리 횟수는 처리 대상 레코드에 비례하므로, 반복계의 처리 시간은 레코드 수에 대해 선형으로 증가한다.SQL을 실행할 때에는, SQL문의 직접적인 실행 외에
이때 SELECT 구문에 서브쿼리를 넣어도 괜찮을까? 라고 생각할 수 있지만,dept_id는 부서 테이블의 PK이므로, 레코드가 한 개로 한정되어 스칼라 서브쿼리로 사용할 수 있다.상관 서브쿼리 vs inner join상관 서브 쿼리를 스칼라 서브쿼리로 사용하면, 결과
PK 값이 1, 2, 3, … 이렇게 늘어나는 sequence가 아닌 경우에 레코드에 순번을 붙일 때 어떻게 하는 지 살펴보자.윈도우 함수 사용성능은 아래와 같다. Index only scan으로 지정해 테이블의 직접적인 접근도 피할 수 있다.상관 서브쿼리MySQL은
이렇게 이전의 레코드와 val 값이 같다면 null로 되어 있는 테이블이 있다. 이 NULL 값을 채워보자.일단 고전적인 SQL 방식으로 생각하면, 상관 서브쿼리를 이용한 방법이 떠오른다.아래처럼 해당 레코드를 찾아 이 레코드의 val의 값으로, null인 레코드를 채
인덱스는 보통 B-tree 구조로 저장되는데, 여기서 성능을 더 높인 B+tree를 대부분 주로 사용한다.B+tree가 좀 더 성능이 좋은 이유는 무엇일까?루트와 리프의 거리를 가능한 일정하게 유지트리의 깊이도 3-4정도의 수준으로 일정데이터가 정렬 상태를 유지 → 검