본문 바로가기

PostgreSQL

group by + limit 의 성능 이슈 테스트 데이터 생성(테이블 생성 + 벌크 데이터) CREATE TABLE public.test2m ( id serial primary key, timeslice timestamp , system_idVARCHAR(100), group_idVARCHAR(100), agent_nameVARCHAR(100), svc_nameVARCHAR(100), COUNTINT ); INSERT INTO public.test2m (timeslice, system_id, group_id, agent_name, svc_name, COUNT) SELECT now() as timeslice, LEFT(md5(random()::text),3) as system_id, LEFT(md5(random()::text),5) as group.. 더보기
Postgresql 변수 / 바인드 / 매개변수 처리 $1, $2 순서대로 바인딩되고 변수의 이름을 바꿀수 없다.(갯수가 다르면 에러) CREATE OR REPLACE FUNCTION report_get_countries_new (starts_with text , ends_with text = NULL) RETURNS SETOF lookups.countries AS $func$ DECLARE sql text := 'SELECT * FROM lookups.countries WHERE country_name >= $1'; BEGIN IF ends_with IS NOT NULL THEN sql := sql || ' AND country_name 더보기
[postgreSQL] Function 구조 postgreSQL에서는 Function과 Store Procedure의 구분이 없다. - 대략적인 구조 CREATE OR REPLACE FUNCTION 함수이름 (파라미터명 파라미터타입, ....) RETURNS 리턴타입 // RETURN 타입이 테이블일 경우 TABLE(컬럼명 컬럼타입, ....) LANGUAGE 사용언어 [COST 최대사용자원(숫자임)] [VOLATILE, STABLE, IMMUTABLE] // 택1, Function수행에 필요한 Query실행 시 최적화와 관련된 부분.. AS [$[함수의 정의를 지칭할 변수명]$] //함수정의 DECLARE // 변수 선언 및 정의 변수명 변수타입, .... BEGIN // 로직시작 [ IF 조건문 THEN 로직 ELSE 로직 END IF; ] [.. 더보기