본문 바로가기

MYSQL13

[MYSQL] 응용 용어1 선택도 테이블의 특정 열을 기준으로 해당 열의 조건절(WHERE 절 조건문)에 따라 선택되는 데이터 비율을 의미 '선택도가 높다'의 의미 : 해당 열에 중복되는 데이터가 많다 '선택도가 낮다'의 의미 : 해당 열에 중복되는 데이터가 적다 선택도가 낮은 A는 새우가 들어가 있는 한 조각을 고르고, 선택도가 높은 B는 여러 조각 중 새우가 들어가있는 것을 알 수 있음 즉, 낮은 선택도가 오히려 대용량 데이터에서 원하는 데이터만 골라내는 능력이라는 것을 우회적으로 보여줌 낮은 선택도를 가지는 열은 데이터를 조회하는 SQL문에서 원하는 데이터를 빨리 찾기 위한 인덱스 열을 생성할 때 주요 고려대상이 됨 선택도를 계산하는 수식 데이터에 접근하고자 특정 열에 대한 조건문을 작성, 해당 조건문에 포함되는 열의 선택도.. 2023. 6. 30.
[MYSQL] 개념적인 튜닝 용어 오브젝트 스캔 유형 오브젝트 스캔 유형은 테이블 스캔(table scan)과 인덱스 스캔(index scan)으로 구분 테이블 스캔 : 인덱스를 거치지 않고 바로 디스크에 위치한 테이블 데이터에 접근하는 유형 - 테이블 풀스 캔 방식 인덱스 스캔 : 인덱스로 테이블 데이터를 찾아가는 유형 - 인덱스 범위 스캔, 인덱스 풀 스캔, 인덱스 고유 스캔, 인덱스 루스 스캔, 인덱스 병합 스캔 방식 테이블 풀 스캔 인덱스를 거치지 않고 테이블로 바로 직행하여 처음부터 끝까지 데이터를 훑어보는 방식 WHERE 절의 조건문을 기준으로 활용할 인덱스가 없거나 전체 데이터 대비 대량의 데이터가 필요할 때 테이블 풀 스캔을 수행할 수 있음 성능 측면에서는 처음부터 끝까지 데이터를 검색하므로 부정적으로 해석 됨 인덱스 범.. 2023. 6. 29.
[MYSQL] JOIN 알고리즘 용어 다수의 테이블에서 JOIN을 수행할 때 동시에 여러 개의 테이블에 접근할 수 없는 만큼 접근하는 우선순위를 정하게 됨 드라이빙 테이블과 드리븐 테이블 학생 정보가 저장된 학생 테이블, 학생가족 정보가 저장된 비상연락망 테이블이 있다고 가정 학생의 학번이 1과 100에 해당할 때만 학생정보와 비상연락망 정보를 조회하는 SQL문 SELECT 학생.학번, 학생.이름, 비상연락망.관계, 비강연락망.연락처 FROM 학생 JOIN 비상연락망 ON 학생.학번 = 비상연락망.학번 WHERE 학생.학번 IN (1, 100) 1. 학생 테이블의 데이터 찾기 - 학생.학번 IN (1, 100) 2. 비상연락망 테이블에서 학번 1과 100 검색 드라이빙 테이블(outer table) : 학생 테이블 (먼저 접근) 드리븐 테.. 2023. 6. 28.
[MYSQL] JOIN 연산방식 용어 JOIN 방식 다수의 테이블의 필요한 데이터끼리 결합할 때 JOIN 방식을 사용 분리된 데이터 간의 공통된 정보, 즉 동일한 열값 또는 키값 기준으로 데이터를 논리적으로 연결할 수 있음 예제 참고 테이블 내부 조인 (Inner JOIN) 내부조인(inner join)은 교집합에 해당하는 방식 양쪽에 모두 존재하는 데이터만 반환 SELECT 학생.학번, 학생.이름, 지도교수.교수명 FROM 학생 JOIN 지도교수 ON 학생.학번 = 지도교수.학번 JOIN 키워드에는 JOIN 대상 테이블을 작성하고 ON 절에는 JOIN 할 비교 조건을 작성 (inner 생략 가능) 암시적 JOIN (내부 조인 결과 동일) SELECT 학생.학번, 학생.이름, 지도교수.교수명 FROM 학생, 지도교수 WHERE 학생.학번 .. 2023. 6. 27.
[MYSQL] 서브쿼리 위치, 메인쿼리와의 관계성, 반환 결과에 따른 SQL 용어 서브쿼리 위치에 따른 SQL 용어 서브쿼리(subquery)란 쿼리 안의 보조쿼리를 가리키는 용어 가장 바깥쪽의 SELECT 문인 메인쿼리(main query)를 기준으로 내부에 SELECT문을 추가로 작성해서 서브쿼리를 생성 작성하는 위치는 크게 SELECT 절, FROM 절, WHERE 절로 구분 스칼라 서브쿼리 메인쿼리의 SELECT 절 내부에 하나의 숫자나 문자, 기호 등을 출력하는 SELECT 문 메인쿼리의 SELECT 절에는 최총 출력하려는 열들이 나열되므로, 출력 데이터 1건과 스칼라 서브쿼리의 결과 건수가 일치해야 함. 즉, 스칼라 서브쿼리의 결과값은 1행 1열의 구조로 출력이 되어야 함 스칼라 서브쿼리는 출력되는 데이터 건수가 1건이어야 하므로 집계함수(max,min,avg,sum,cou.. 2023. 6. 26.
[MYSQL] DB 엔진, SQL 프로세스 용어 DB 엔진 용어 1. 사용자가 DB에서 원하는 데이터를 가져오기 위해 SQL문 실행 2. 실행된 SQL문은 MYSQL 엔진에서 문법에러 체크, DB에 존재하는 테이블 대상으로 SQL문을 작성했는지 여부 등 다양한 문법 및 구문 검사 (파싱작업을 하는 파서(parser 역할) 3. 요청한 데이터를 빠르고 효율적으로 찾아가는 전략적 계획 수립(옵티마이저(optimizer 역할) 4. 스토리 엔진에 위치한 데이터까지 찾아간 뒤 해당 데이터를 MYSQL 엔진으로 전달 5. 불필요한 부분을 필터링(제거, 변경)하고 필요한 연산을 수행한 뒤 사용자에게 최종 결과 전달 스토리지 엔진 - (InnoDB, MyISAM, Memory 등) 스토리지 엔진은 사용자가 요청한 SQL문을 토대로 DB에 저장된 디스크나 메모리에서.. 2023. 6. 25.