본문 바로가기

분류 전체보기242

Postgresql 에서 index의 의미와 설정 시 효과, 유용하게 활용 사례 PostgreSQL에서 인덱스는 데이터베이스 성능을 향상시키는 중요한 도구입니다. 다음은 인덱스의 의미, 설정 시 효과, 그리고 유용한 활용 사례에 대한 정리입니다.## 인덱스의 의미인덱스는 테이블의 특정 컬럼에 대한 검색 속도를 높이기 위해 사용되는 데이터 구조입니다. 책의 목차와 유사하게, 데이터베이스 엔진이 원하는 데이터를 빠르게 찾을 수 있도록 도와줍니다[1][39].## 인덱스 설정 시 효과1. **검색 속도 향상**: 대용량 테이블에서 특정 행을 빠르게 찾을 수 있습니다[3].2. **정렬 및 그룹화 성능 개선**: ORDER BY와 GROUP BY 연산의 효율성이 증가합니다[39].3. **조인 연산 최적화**: 테이블 간 조인 작업의 성능이 향상됩니다[3].4. **유니크 제약 조건 강화*.. 2025. 1. 20.
Postgresql 윈도우 함수의 범위 지정 PostgreSQL의 윈도우 함수에서 범위를 지정하는 방법은 프레임 절(frame clause)을 통해 이루어집니다. 프레임 절은 윈도우 함수가 작동하는 행의 집합을 정의합니다. 주요 범위 지정 방법은 다음과 같습니다:## ROWS와 RANGE윈도우 프레임을 정의하는 두 가지 주요 방식:1. ROWS: 물리적인 행의 위치를 기준으로 프레임을 정의합니다.2. RANGE: 현재 행의 값을 기준으로 값의 범위를 지정합니다.## 프레임 지정 구문기본 구문:```sqlOVER (  ORDER BY column  [ROWS | RANGE] BETWEEN frame_start AND frame_end)```frame_start와 frame_end에 사용할 수 있는 옵션:- UNBOUNDED PRECEDING: 파티션.. 2025. 1. 19.
postgresql에서 percentile_cont(), percentile_disc() PostgreSQL에서는 percentile_cont()와 percentile_disc() 함수를 모두 사용할 수 있습니다. 이 두 함수는 PostgreSQL 9.4 버전부터 도입되었으며, 현재까지 지원되고 있습니다.## percentile_cont()percentile_cont()는 연속 분포를 가정하고 백분위수를 계산하는 함수입니다.- 특징:   - 지정된 백분위수에 해당하는 값을 보간하여 반환합니다.  - 결과값이 입력 데이터셋에 실제로 존재하지 않을 수 있습니다.- 사용 예:```sqlSELECT percentile_cont(0.5) WITHIN GROUP (ORDER BY column_name)FROM table_name;```## percentile_disc()percentile_disc()는.. 2025. 1. 19.
postgresql에서 행순서 함수와 분포함수에 대해 리스트업하고 내용도 자세히 정리 PostgreSQL에서는 다양한 행순서 함수와 분포함수를 제공합니다. 이들 함수는 데이터 분석과 통계 작업에 매우 유용합니다. 아래에 주요 함수들을 리스트업하고 자세히 설명하겠습니다.## 행순서 함수1. ROW_NUMBER()   - 파티션 내에서 각 행에 고유한 순차적 번호를 할당합니다.   - 중복 값이 있어도 항상 고유한 번호를 부여합니다.2. RANK()   - 파티션 내에서 순위를 매깁니다.   - 중복 값에 대해 같은 순위를 부여하고, 다음 순위는 중복된 개수만큼 건너뜁니다.3. DENSE_RANK()   - RANK()와 유사하지만, 중복 값에 대해 순위를 건너뛰지 않습니다.   - 연속적인 순위를 생성합니다.4. FIRST_VALUE()   - 윈도우 프레임의 첫 번째 행 값을 반환합니다... 2025. 1. 19.
Sql-server의 윈도우함수들이 postgresql에서 사용가능한지 확인하고 사용가능한 것과 대체해서 사용할 수 있는 것을 리스트로 정리하고 내용도 정리 SQL Server의 윈도우 함수들은 대부분 PostgreSQL에서도 사용 가능합니다. 두 데이터베이스 시스템 모두 ANSI SQL 표준을 따르기 때문에 많은 윈도우 함수들이 유사하게 구현되어 있습니다. 다음은 SQL Server의 윈도우 함수들과 PostgreSQL에서의 사용 가능 여부 및 대체 방법을 정리한 리스트입니다:## 사용 가능한 윈도우 함수1. ROW_NUMBER()2. RANK()3. DENSE_RANK()4. NTILE()5. LAG()6. LEAD()7. FIRST_VALUE()8. LAST_VALUE()9. SUM()10. AVG()11. COUNT()12. MIN()13. MAX()이 함수들은 SQL Server와 PostgreSQL에서 동일한 이름과 유사한 구문으로 사용할 수 있습.. 2025. 1. 19.
postgresql에 sql-server에 있는 rollup(), cube(), grouping() grouping sets(), pivot절, unpivot절이 있는지 없는지 확인하고 기능 비교하고 없으면 대체할 수 있는 방법 PostgreSQL은 SQL Server와 유사한 그룹화 및 피벗 기능을 대부분 지원하지만, 구문과 사용법에 약간의 차이가 있습니다. 각 기능별로 비교해보겠습니다:## ROLLUPPostgreSQL은 ROLLUP을 지원합니다. 사용법은 SQL Server와 거의 동일합니다.```sqlSELECT column1, column2, SUM(column3)FROM tableGROUP BY ROLLUP (column1, column2);```## CUBEPostgreSQL은 CUBE도 지원합니다. 사용법은 SQL Server와 유사합니다.```sqlSELECT column1, column2, SUM(column3)FROM tableGROUP BY CUBE (column1, column2);```## GROUPIN.. 2025. 1. 19.
Java8 비동기 처리 예제 public List retrieveYcvsSsevntList(String svcTypeCd, String strCd, String custNo, String sessnId) { // 기획전 목록 조회 List sseventList = this.ycvsSseventGsmcMapper.retrieveYcvsSsevntList(svcTypeCd, strCd, custNo, sessnId); if (sseventList == null || sseventList.isEmpty()) { return null; } List> asyncSseventList = new ArrayList(); for (YcvsSsevntInf.. 2024. 9. 13.
[Java] toString() 공통 오버라이드 라이브러리를 안써서 직접 구현 package com.gsr.base;import java.lang.reflect.Field;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;public class CmmUtils { /** * 배열을 입력받아 리스트로 리턴한다. * * @param s 동적 배열 */ @SafeVarargs public static List listOf(T... s) { if(s == null) { return new ArrayList(); } return Arrays.stream(s).collect(Collectors.toLis.. 2024. 6. 5.
[JAVA] Thread-safe collections(동기화된 콜렉션 선언) 리스트 private List forceInsertItemCdList = Collections.synchronizedList(new ArrayList()); 내부 코드 /** * Returns a synchronized (thread-safe) list backed by the specified * list. In order to guarantee serial access, it is critical that * all access to the backing list is accomplished * through the returned list. * * It is imperative that the user manually synchronize on the returned * list when itera.. 2024. 2. 15.