Back-End/DB

공간 데이터 인덱스 추가

Meluu_ 2025. 11. 20. 23:24

행정동 데이터의 geom을 이용해 

ST_Contains로 특정 POINT가 포함되어있는지 확인하였다.

 

그러다 문뜩 이게 인덱스를 타는지 궁금하여 실행계획을 봤더니..

explain 
select id
FROM region_dong
WHERE ST_Contains(
	geom,
    ST_SRID(POINT(126.9780, 37.5665), 4326)
);

 

type ALL 즉, 풀스캔을 때려버렸다.

왜인지 궁금해서 찾아보았다.

 

 

1. SRID 불일치

이는 SELECT ST_SRID(geom)로 확인해본 결과 4326으로 잘 저장되어있다.

 

2. 공간 인덱스 미생성

-> 이거다.. 

 

공간데이터라서 mysql 단에서 자동으로 인덱스를 생성해주는줄 알았다.

 

아래 쿼리를 날려서 공간데이터 인덱스를 생성해주었다. 이로써 R-Tree를 사용하는 공간 인덱스가 생성된다.

R-Tree는 도형의 MBR(최소 경계 사각형)을 기반으로 공간에서 근접한 도형들끼리 묶어서 빠르게 검색하는 방식이다.

CREATE SPATIAL INDEX idx_region_geom ON region_dong (geom);

 

'Back-End > DB' 카테고리의 다른 글

MYSQL DB 명 변경  (0) 2025.11.07
외래키 설정에 대해  (0) 2025.11.04
Real My SQL 8.0 [공간 데이터]  (1) 2025.09.25
Real MySQL 8.0 [실행계획 : Extra 칼럼]  (0) 2025.09.03
Real MySQL 8.0 [실행계획]  (4) 2025.09.01