DB/PostgreSQL

    [PostgreSQL] 하나의 쿼리로 여러 row update하기

    하나의 쿼리로 여러 row update하는 법 update table_name as tb set column1 = data.column1, column2 = data.column2 from (values (1, 'column1_a', 'column2_a'), (2, 'column1_b', 'column2_b') ) as data(id, column1, column2) where 1 = 1 and tb.id = data.id values에 ()로 구분하여서 데이터 row를 넣어주고, 각 row의 컬럼이 어떤 컬럼을 의미하는지 넣어주면 됩니다.

    [PostgreSQL, Spring Data JPA] earthdistance를 이용하여 주어진 위도/경도에서 근처 장소 조회하기(Native Query)

    들어가며 프로젝트를 진행하면서, 지도상의 위치(위도/경도)와 범위(range)값을 받아서 범위 안에 속하는 빵집을 검색 API를 구현해야 했습니다. 현재 사용하고 있는 database는 postgreSQL이어서 postgreSQL의 거리 계산 관련하여 구글링하였습니다. 그 결과, postgreSQL에서 공식적으로 지원하는 earthdistance 모듈을 설치하여 geolocation을 다뤄보기로 했습니다. earthdistance는 지구가 타원형이 아닌 완벽한 구의 형태라고 가정하고 사용하는 모듈이기 때문에, 정밀한 거리 계산이 필요하다면 thirdparty에서 제공하는 postGIS를 쓰는 것도 좋은 방법일 것 같습니다. 단, postGIS는 postgreSQL이 공식적으로 지원하지는 않습니다. ear..

    [PostgreSQL] PGAdmin에서 실행계획 확인하기

    PGAdmin에서 실행계획 확인하기 실행하고자 하는 쿼리 상단에 explain(analyze,buffers)를 작성하고 실행하면 아래와 같이 실행 계획을 확인할 수 있습니다. explain(analyze,buffers) select ... from ... where ... 실행계획의 Index Scan 또는 Seq Scan을 통해 인덱스를 타서 쿼리가 실행되었는지 조회할 수 있습니다. Index Scan 부분이 인덱스를 타서 쿼리가 실행된 부분