db(4)
-
[PostgreSQL] Vector Search를 위한 인덱스 타입 비교 (HNSW vs IVFFlat)
서론안녕하세요! 요즘 AI 시대를 맞이하여 벡터 검색(Vector Search)이 정말 핫한데요. PostgreSQL에서도 pgvector 확장을 통해 벡터 검색을 지원하고 있습니다. 오늘은 벡터 검색에 사용되는 두 가지 주요 인덱스 타입인 HNSW와 IVFFlat에 대해 알아보겠습니다.무엇이 다를까?우선 두 인덱스의 주요 특징을 간단히 비교해볼까요?HNSW (Hierarchical Navigable Small World)그래프 기반 인덱스빠른 검색 속도더 많은 메모리 사용인덱스 생성이 더 오래 걸림IVFFlat (Inverted File Flat)클러스터 기반 인덱스적은 메모리 사용빠른 인덱스 생성HNSW보다는 조금 느린 검색 속도실제 사용 예제간단한 예제로 두 인덱스의 사용법을 살펴보겠습니다.-- p..
2024.11.14 -
[PostgreSQL] 인덱스(Index)의 기초 이해하기
서론안녕하세요! 오늘은 PostgreSQL에서 매우 중요한 개념인 인덱스(Index)에 대해 알아보려고 합니다. 데이터베이스 성능 최적화에 있어 인덱스는 정말 중요한 요소인데요, 어떤 경우에 필요하고 어떻게 동작하는지 자세히 살펴보겠습니다.1. 인덱스의 필요성책을 읽을 때 목차가 없다고 상상해보세요. 특정 내용을 찾으려면 처음부터 끝까지 다 훑어봐야 하겠죠? 데이터베이스도 마찬가지입니다.인덱스가 없을 때의 문제점-- 인덱스가 없는 상황에서의 검색SELECT * FROM users WHERE email = 'user@example.com';이 쿼리는 테이블의 모든 row를 확인해야 합니다(Full Table Scan). 데이터가 많아질수록 성능은 급격히 저하됩니다.인덱스의 장점검색 속도 향상ORDER BY..
2024.11.14 -
MSSQL - 중복데이터 처리
MSSQL에서 중복데이터가 발생시 사용하는 쿼리를 한번 살펴 봅니다. 우선 중복처리를 위해서 중복을 확인 할 필요가 있습니다. (단 확실하게 중복이 들어있는것이 맞다면 이 쿼리를 실행하지 않습니다.. 그냥 시간만 낭비할뿐..) SELECT ROW_NUMBER() OVER (PARTITION BY ORDER BY , * FROM 이렇게 조회를 하면 내가 중복을 거를 조건을 Column Name으로 하여 조회 할 수 있다. 이렇게 중복이 확인 되면 DELETE A FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY ORDER BY ) AS NUM, * FROM ) A WHERE num >= 2 각 중복을 확인하고 중복 된 회수를 A에 기록한다. 그리고 A의 회수가 2이상 즉 중..
2021.10.23 -
MSSQL - IDENTITY 값 초기화
우리가 테이블을 생성하고 IDENTITY을 지정하게 되는데 (ex. ID) 순차적으로 값이 증가해서 Index를 만들기는 편하지만 Data를 삭제하는경우 ID값의 증가량이 그대로 유지가 되어서 곤란한경우가 생기는데 이때 이를 해결하기 위해서 아래 쿼리로 해결 할 수있다. 1. 현재 ID값 확인 DBCC CHECKIDENT(, NORESEED) 2. DBCC CHECKIDENT(, RESEED, ) SEED No. 에 내가 시작하고 싶은 identity의 값을 입력하면 된다. 만약 0으로 초기화 하고싶다면 SEED No.에 0을 입력해준다. 3. 사용 예 (1) 이미 데이터가 90번까지 차있는 상태에서 10개 항목을 추가한다 (2) 방금 추가한 10개 항목을 지운다. (3) DBCC CHECKIDENT(,..
2021.07.12