행정동 데이터의 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 |