본문 바로가기

PostgreSQL4

PostgreSQL LIKE 검색 CREATE EXTENSION IF NOT EXISTS pg_trgm;* Trigram기반 검색:
pg_trgm은 텍스트를 3글자 단위로 분해하여 인덱스를 생성하고, 이를 기반으로 검색합니다. 예를 들어 "hello"라는 단어는 "hel", "ell", "llo"의 trigram으로 분해됩니다.


* LIKE 검색 최적화:
LIKE 연산자를 사용하여 텍스트 검색을 할 때, 특히 와일드카드(*, %)를 사용한 부분 일치 검색에서 pg_trgm을 사용하면 성능을 크게 향상시킬 수 있습니다.


* FULL TEXT SEARCH와의 차이:
FULL TEXT SEARCH는 단어 단위로 인덱스를 생성하고, 형태소 분석 등을 통해 검색어를 처리하여 더 정확하고 복잡한 검색을 지원합니다. pg_trgm은 단순한 t.. 2025. 8. 20.
PostgreSQL 암복호화 CREATE EXTENSION IF NOT EXISTS pgcrypto; -- 이 형식은 커넥션이 같은 스키마에서만 사용 가능ENCODE(decrypt(decode(phone_number, 'hex'), current_setting('encodingKey')::bytea, 'aes'), 'escape' )::text AS phone_number-- 다른 스키마 접근 시 새로운 커넥션이 일어나기 때문에 기존 세션 변수 사용이 안된다.ENCODE(decrypt(decode(phone_number, ''hex''), ' || '''' || #{encodingKey} || '''' || '::bytea, ''aes''), ''escape'')::text AS phone_number, ENCODE(encrypt.. 2025. 8. 20.
PostgreSQL 현재 테이블 Index 조회 인덱스 조회 SELECT indexname, indexdefFROM pg_indexesWHERE tablename = 'mytable'; 2025. 8. 20.
PostgreSQL 데이터 순차 증가 시키며 Insert 하기 WITH RECURSIVE generate_ships AS ( -- 기존 데이터 (ship_id = 1) SELECT ship_id, member_id, description FROM t_ship_contacts WHERE ship_id = 1 UNION ALL -- 재귀적으로 ship_id 증가 SELECT ship_id + 1, -- ship_id만 증가 member_id, description FROM generate_ships WHERE ship_id 1 동일한 데이터에 유니크 키 값만 + 1 증가시키는 데이터 복사 작업 시 사용 2025. 8. 20.