기타

MYSQL ST_DISTANCE_SPHERE 함수

MIN우 2024. 1. 17. 12:19
728x90

ST_DISTANCE_SPHERE 함수란?

MySQL에서 제공하는 지리 함수 중 하나로, 두 지점 사이의 거리를 구하는 데 사용한다.구의 표면을 이용하여 두 지점 사이의 최단 거리를 계산하고 이를 미터로 환산해준다.

 

ST_DISTANCE_SPHERE 함수의 사용법

ST_DISTANCE_SPHERE(point(lon1, lat1), point(lon2, lat2))

위 구문에서 lon1, lat1,  lon2, lat2는 경도와 위도 값을 나타내다. 이 함수는 두 지점 사이의 거리를 미터 단위로 반환한다.

약간 헷갈리는게 우리가 위도/경도가 순서가 익숙한데 여기서는 경도, 위도 순이라는 점이다.

 

나중에 데이터값이 1000개 10000개 점점 늘어날 수록 성능이 급격하게 떨어질 수 있을 것 같다. 

추후에 공간인덱스를 설정하여 나중에 성능을 최적화해보자

 

성능 최적화하기

공간 인덱스 (Spatial index)

point, line, polygon 데이터와 같은 DB에서 공간 쿼리 작업 성능을 향상시키는 데 사용되는 인덱스입니다

공간 인덱스를 사용해서 점의 특정 거리 내에 있는 객체를 찾는 작업 속도를 높일 수 있습니다

공간 인덱스는 셀이라고 하는 더 작고 관리하기 쉬운 청크로 분할해서 작동합니다

각 셀에는 객체 집합이 들어있으며 셀은 MySQL에서 공간 인덱스는 R-Tree 라는 자료구조를 사용하고 2차원 공간의 데이터를 인덱싱하는 데 사용됩니다

(R-Tree는 공간 쿼리에 최적화된 트리 기반 자료구조 입니다)

 

 

 

 

참고: https://velog.io/@noh0907/MySQL-%EC%A2%8C%ED%91%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0-Spatial-Index-%ED%99%9C%EC%9A%A9%ED%95%98%EA%B8%B0

728x90