반응형

oracle 18

[Oracle/MSSQL] WHERE 조건절 순서에 따른 속도차이, 조건절 순서 속도, WHERE 절 속도차이

TABLE에서 INDEX 가 참조하는 컬럼이 A,B,C 일때, 아래 두 쿼리중에 실행속도는 뭐가 더 빠를까? 1. SELECT * FROM TABLE WHERE A = 1 AND B=2 AND C=3 2. SELECT * FROM TABLE WHERE A = 1 AND C=3 AND B=2두 쿼리의 실행 속도는 사실상 동일하다. 왜냐하면, 데이터베이스의 쿼리 최적화 엔진이 WHERE 절의 조건 순서를 자동으로 최적화하여 가장 효율적인 방법으로 쿼리를 실행하기 때문이다. 옵티마이저가 똑똑해서 쿼리의 WHERE절을 살펴보고 키가 있는것을 우선 적용해 검색을 한다. 단, 인덱스의 쿼리가 모두 조건절에 들어있어야 인덱스를 100% 활용한다고 볼 수 있다. ​예를 들어, 다음 두 쿼리는:SELECT * FROM ..

Dev/Database 2024.07.04

[Oracle] 프로시저 실행하는 법

1. IN 변수만 있는 프로시저CALL [프로시저명]('변수1', '변수2', ...);CALL CREATE_STUDENT_ACCOUNT('홍길동', '19910712','남');※ EXEC 는 SQL PLUS 에서만 사용 가능한 명령어임.2. IN, OUT 변수가 있는 프로시저DECLARE [OUT변수명1] [타입명]([길이]);BEGIN [프로시저명]('IN변수명1','IN변수명2','IN변수명3', OUT변수명1);END;DECLARE ERRMSG VARCHAR2(100);BEGIN CREATE_STUDENT_ACCOUNT('홍길동', '19910712','남', ERRMSG);END; 3. 프로시저 실행 후 OUTPUT 조회하기DECLARE ERRMSG VARCHAR2(..

Dev/Database 2024.04.19

[프로그래머스/Oracle] 조건에 맞는 도서 리스트 출력하기

[설명] 다음은 어느 한 서점에서 판매중인 도서들의 도서 정보(BOOK) 테이블입니다. BOOK 테이블은 각 도서의 정보를 담은 테이블로 아래와 같은 구조로 되어있습니다. Column name Type Nullable Description BOOK_ID INTEGER FALSE 도서 ID CATEGORY VARCHAR(N) FALSE 카테고리(경제, 인문, 소설, 생활, 기술) AUTHOR_ID INTEGER FALSE 저자 ID PRICE INTEGER FALSE 판매가 (원) PUBLISHED_DATE DATE FALSE 출판일 [문제] BOOK 테이블에서 2021년에 출판된 '인문' 카테고리에 속하는 도서 리스트를 찾아서 도서 ID(BOOK_ID), 출판일 (PUBLISHED_DATE)을 출력하는 ..

[프로그래머스/Oracle] 가격이 제일 비싼 식품의 정보 출력하기

[설명] 다음은 식품의 정보를 담은 FOOD_PRODUCT 테이블입니다. FOOD_PRODUCT 테이블은 다음과 같으며 PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE는 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 의미합니다. Column name Type Nullable PRODUCT_ID VARCHAR(10) FALSE PRODUCT_NAME VARCHAR(50) FALSE PRODUCT_CD VARCHAR(10) TRUE CATEGORY VARCHAR(10) TRUE PRICE NUMBER TRUE [문제] FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 ..

[프로그래머스/Oracle] 가장 비싼 상품 구하기

[설명] 다음은 어느 의류 쇼핑몰에서 판매 중인 상품들의 정보를 담은 PRODUCT 테이블입니다. PRODUCT 테이블은 아래와 같은 구조로 되어있으며, PRODUCT_ID, PRODUCT_CODE, PRICE는 각각 상품 ID, 상품코드, 판매가를 나타냅니다. Column name Type Nullable PRODUCT_ID INTEGER FALSE PRODUCT_CODE VARCHAR(8) FALSE PRICE INTEGER FALSE 상품 별로 중복되지 않는 8자리 상품코드 값을 가지며, 앞 2자리는 카테고리 코드를 의미합니다. [문제] PRODUCT 테이블에서 판매 중인 상품 중 가장 높은 판매가를 출력하는 SQL문을 작성해주세요. 이때 컬럼명은 MAX_PRICE로 지정해주세요. [정답] -- 코..

[Oracle] TRUNCATE, DELETE, DROP 차이, 테이블 데이터 삭제

1. 테이블 구조는 남기고 데이터 전체 삭제 - DDL - 트랜잭션 로그에 한번만 기록되므로 성능이 DELETE보다 좋음 - ROLLBACK 불가능 - 테이블 용량이 초기화됨 TRUNCATE TABLE [테이블명]; 2. 테이블 존재 자체를 삭제 - DDL - 테이블 정의, 테이블에 대한 데이터, 인덱스, 트리거, 제약조건 및 권한 모두 제거 DROP TABLE [테이블명]; 3. 조건절 이용해서 특정 행만 삭제 - DML - 테이블 용량 감소 X - 행 잠금(LOCK)을 사용하여 실행됨 - 삭제된 각 행에 대해 트랜잭션 로그를 기록하므로 TRUNCATE 보다 느림 - 인덱싱 된 VIEW 와 함께 사용가능 - ROLLBACK 가능 DELETE TABLE [테이블명] WHERE ROWNUM > 2 ;

Dev/Database 2023.06.12

[Oracle/DBeaver] 데이터 추출하기

DBeaver에서 특정 테이블의 데이터를 다양한 형태로 추출할 수 있다. 1. 추출하려는 테이블 우클릭 > 데이터 내보내기 2. 원하는 데이터 형식 선택 > 다음 3. 파일 저장 위치 설정 후 진행 버튼 클릭 Q. 인코딩 형식을 UTF-8 로 선택했음에도 한글이 깨지는 경우에는 데이터 추출을 어떻게 하나요? 1. SELECT COUT(*) FROM [가져오려는 테이블] 출력 후 전체 데이터 갯수만큼 한꺼번에 조회되도록 하단 숫자 변경 2. 다시 전체 데이터 조회 후 행 전체 클릭 및 복사 4. 엑셀 파일에 붙여넣기

Dev/Database 2023.02.22

[프로그래머스/Oracle] 경기도에 위치한 식품창고 목록 출력하기

[문제] 다음은 식품창고의 정보를 담은 FOOD_WAREHOUSE 테이블입니다. FOOD_WAREHOUSE 테이블은 다음과 같으며 WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, TLNO, FREEZER_YN는 창고 ID, 창고 이름, 창고 주소, 전화번호, 냉동시설 여부를 의미합니다. Column name Type Nullable WAREHOUSE_ID VARCHAR(10) FALSE WAREHOUSE_NAME VARCHAR(20) FALSE ADDRESS VARCHAR(100) TRUE TLNO VARCHAR(20) TRUE FREEZER_YN VARCHAR(1) TRUE [문제] FOOD_WAREHOUSE 테이블에서 경기도에 위치한 창고의 ID, 이름, 주소, 냉동시설 여부를 ..

[프로그래머스/Oracle] 나이 정보가 없는 회원 수 구하기

[설명] 다음은 어느 의류 쇼핑몰에 가입한 회원 정보를 담은 USER_INFO 테이블입니다. USER_INFO 테이블은 아래와 같은 구조로 되어있으며, USER_ID, GENDER, AGE, JOINED는 각각 회원 ID, 성별, 나이, 가입일을 나타냅니다. Column name Type Nullable USER_ID INTEGER FALSE GENDER TINYINT(1) TRUE AGE INTEGER TRUE JOINED DATE FALSE GENDER 컬럼은 비어있거나 0 또는 1의 값을 가지며 0인 경우 남자를, 1인 경우는 여자를 나타냅니다. [문제] USER_INFO 테이블에서 나이 정보가 없는 회원이 몇 명인지 출력하는 SQL문을 작성해주세요. 이때 컬럼명은 USERS로 지정해주세요. [정답..

[프로그래머스/Oracle] 조건에 맞는 회원수 구하기

[설명] 다음은 어느 의류 쇼핑몰에 가입한 회원 정보를 담은 USER_INFO 테이블입니다. USER_INFO 테이블은 아래와 같은 구조로 되어있으며 USER_ID, GENDER, AGE, JOINED는 각각 회원 ID, 성별, 나이, 가입일을 나타냅니다. Column name Type Nullable USER_ID INTEGER FALSE GENDER TINYINT(1) TRUE AGE INTEGER TRUE JOINED DATE FALSE GENDER 컬럼은 비어있거나 0 또는 1의 값을 가지며 0인 경우 남자를, 1인 경우는 여자를 나타냅니다. [문제] USER_INFO 테이블에서 2021년에 가입한 회원 중 나이가 20세 이상 29세 이하인 회원이 몇 명인지 출력하는 SQL문을 작성해주세요. [정..

반응형