반응형

sql 51

[SQL] 부정 논리 연산자(not in 등) 과 Null의 관계

실무에서 SQL쿼리를 사용하다 보면 Where 조건에 in과 not in 조건을 많이 사용할 텐데, not in(부정 논리 연산자)을 사용할때 주의하여야 한다. 그 이유는 NULL 때문이다.부정연산자부정 논리 연산자의 경우 위 표처럼 같지 않은 경우를 필터링할 때 사용하는 연산자이다.주로 not in이나 '', '!=' 등을 많이 사용한다. 부정 연산자와 Null의 관계결론부터 말하자면 부정 연산자를 사용하면 Null값이 모두 누락되게 된다.예시를 확인해보자 (샘플데이터 쿼리는 포스팅 최하단에 있음)SELECT * FROM orders WHERE 1=1 AND product_id not in (101,102)원래 의도는 product_id가 101,102인 것만 제외하고 조회하고 싶..

SQL & DB/PostgreSQL 2024.07.08

[PostgreSQL/MYSQL] 날짜/시간 계산(INTERVAL타입, age함수) (DATEDIFF, TIMESTAMPDIFF)

DATASET QUERYDROP TABLE IF EXISTS mst_users_with_dates;CREATE TABLE mst_users_with_dates ( user_id varchar(255) , register_stamp varchar(255) , birth_date varchar(255));INSERT INTO mst_users_with_datesVALUES ('U001', '2020-02-28 10:00:00', '2000-02-29') , ('U002', '2020-02-29 10:00:00', '1992-03-29') , ('U003', '2020-03-01 10:00:00', '2002-01-29') , ('U004', '2020-03-01 11:..

SQL & DB/PostgreSQL 2023.11.24

[SQL 튜닝] SQL 옵티마이저

선택도와 카디널리티 1. 선택도 : 조건절에 의해 선택되는 레코드 비율 선택도 = 1 / NDV(컬럼 값 종류 개수) 카디널리티 : 전체 레코드 중 조건절에 의해 선택되는 레코드 수 카디널리티 = 총 로우 수 * 선택도 = 총 로우 수 / NDV 옵티마이저는 카디널리티를 구하고, 데이터를 액세스하는데 드는 비용을 계산해서 데이블 액세스 방식, 조인순서, 조인방식 등을 결정 선택도를 제대로 계산하는 것이 중요 통계정보 테이블 통계 인덱스 통계 컬럼 통계 : 테이블 통계 수집할 때 함께 수집. '=' 조건에 대한 선택도는 데이터 분포가 균일하지 않은 컬럼에서는 잘못 산출될 수 있기 때문에 옵티마이저는 일반적인 컬럼통계 외에 히스토그램을 추가로 활용 시스템 통계 : 애플리케이션 및 하드웨어 성능 특성 측정 C..

SQL & DB/SQL 튜닝 2021.06.26
반응형