본문 바로가기

Categories48

NDV, 카디널리티, 선택도란 무엇일까? 우리가 데이터베이스에서 데이터를 다룰 때, 자주 듣는 말 중에 NDV, 카디널리티(Cardinality), 선택도(Selectivity)라는 용어가 있어요. 처음 들으면 좀 낯설지만, 쉽게 풀어보면 생각보다 단순한 개념들입니다.이 글에서 이 세 가지 개념을 아주 쉬운 예시로 풀어보겠습니다.1. NDV (Number of Distinct Values) – 서로 다른 값은 몇 개일까?먼저, NDV는 "서로 다른 값의 개수"를 말해요.예를 들어, 다음과 같은 학생 리스트가 있다고 해볼게요:학생 이름좋아하는 과일지훈사과민지바나나준호사과수아포도유나사과 여기서 '좋아하는 과일' 컬럼을 보면 총 5명이 있지만, 실제로는 사과, 바나나, 포도 — 이렇게 서로 다른 과일은 3개예요.이럴 때 NDV는 3이에요.💡 NDV.. 2025. 7. 23.
[snowflake] Snowflake 내에서 SLACK 알림 발송 Notification Integration 생성알림을 보내기 위한 사전 작업입니다.CREATE OR REPLACE NOTIFICATION INTEGRATION noti_slack_webhook_int TYPE=WEBHOOK ENABLED=TRUE WEBHOOK_URL='https://hooks.slack.com/services/T00000000/B0000000000/000000000000000000000000' WEBHOOK_BODY_TEMPLATE='{"text": "SNOWFLAKE_WEBHOOK_MESSAGE"}' WEBHOOK_HEADERS=('Content-Type'='application/json');Slack 알림 테스트프로시저 호출하여 테스트 문구를 발송합니다-- 슬랙 알림 테스.. 2025. 7. 16.
[PostgreSQL] 인덱스를 활용한 효율적인 페이징 처리 페이징처리에 대한 중요성웹이나 백오피스 시스템에서 대량의 데이터를 다룰 때, 사용자에게 데이터를 한번에 모두 보여주기보다는 일정 수량 단위로 나눠서(page 단위로) 제공하는 방식, 즉 페이징(Pagination)이 거의 필수적으로 사용됩니다.하지만 많은 개발자들이 단순 OFFSET 기반 페이징을 사용하고 있고, 이로 인해 다음과 같은 문제가 발생할 수 있습니다:페이지가 뒤로 갈수록 성능이 급격히 저하됨필요 없는 데이터까지 스캔하거나 정렬하면서 리소스 낭비 발생사용자 경험(UX) 측면에서도 응답 지연이 발생OFFSET 방식의 문제점예를 들어 아래와 같은 쿼리가 있다고 가정해봅시다.SELECT * FROM ordersORDER BY created_at DESCOFFSET 10000 LIMIT 20;OFFS.. 2025. 6. 3.
[PostgreSQL] group by 결과를 받아볼 수 있는 함수 SQL로 데이터 분석을 하다보면, 은근히 Group by 집계 쿼리문과 Having 후 필터링 조건문을 사용할 일이 많단 말이죠. 독자분들이 저와 같은 귀차니즘이라면 한 번 사용해보세요.  특히 pk가 논리적 erd로만 표현되어 있고, 물리적으로 생성되지 않아, 중복 데이터 유무를 조회해야 할 때 유용하게 사용 중입니다. ※ 지원 가능한 버전(Supported Versions): Current (17) / 16 / 15 / 14 / 13     1. Create Function함수를 생성합니다.물론 group by문으로 조회할 테이블과 같은 데이터베이스에 생성해야 합니다.group by 컬럼이 1개 이상이므로 jsonb 타입으로 집계처리 합니다.create or replace function public.. 2025. 1. 23.
[snowflake] 현재 날짜 및 시간을 반환하는 함수 개요Snowflake에서 현재 시간을 나타내는 다양한 함수들이 있으며, 각각의 함수는 약간의 차이가 있습니다. 아래는 주요 함수들과 그 차이에 대해 설명한 내용입니다. 1. GETDATE() 설명:GETDATE() 함수는  세션 타임존을 기준으로 현재 날짜와 시간을 반환합니다.즉, ALTER SESSION SET TIMEZONE 명령어로 세션 타임존을 변경하면 그 변경된 타임존을 반영하여 시간이 출력됩니다반환 형식: TIMESTAMP_LTZ (로컬 타임존을 기준으로 한 타임스탬프)특징: Snowflake에서는 기본적으로 타임스탬프가 로컬 타임존을 기준으로 반환됩니다.SELECT GETDATE();  2. SYSDATE() 설명:SYSDATE() 함수도 현재 날짜와 시간을 반환하지만, 시스템의 시간대에 맞.. 2025. 1. 10.
[PostgreSQL] 통계 정보 수집 (ANALYZE, VACCUM) 통계 정보 수집 방법1. 전체 데이터베이스에 대해 통계 정보 수집데이터베이스 내 모든 테이블의 통계 정보를 갱신하려면 다음 명령을 실행합니다:ANAYZE; 이 명령은 데이터베이스에 있는 모든 테이블과 열의 통계를 수집합니다.  2. 특정 테이블에 대해 통계 정보 수집특정 테이블만 통계 정보를 갱신하려면 테이블 이름을 명시합니다:ANALYZE your_table_name;해당 테이블의 모든 열에 대해 통계를 수집합니다.3. 특정 열에 대해 통계 정보 수집테이블의 특정 열에 대해서만 통계를 갱신하려면 열 이름을 명시합니다:ANALYZE your_table_name (your_column_name);이 방법은 열에 대한 통계 정보만 수집하므로 빠르게 실행됩니다.4. VACUUM과 함께 통계 정보 갱신VACUU.. 2025. 1. 3.
반응형